2013-03-11 3 views
0

jQuery를 사용하여 AJAX 제출 양식을 만들고 PHP로 메일러 양식을 처리합니다 (아래에서 보는 내용입니다). 아래 코드를 기반으로 AJAX/jQuery 양식? htmlspecialchars() 함수에서 trim() 함수를 래핑하는 것이 괜찮습니까? 전자 메일 내용이 데이터베이스에 삽입되지 않아서 PHP 메일러를 보낼 때 어떤 유형의 보안을 고려해야합니까?

<?php 

    $content_link = trim($_POST['content_link']); 
    $email = trim($_POST['email']); 
    $viewport_size = trim($_POST['viewportsize']); 
    $browser = trim($_POST['browser']); 
    $os = trim($_POST['os']); 
    $current_page = trim($_POST['current_page']); 

    $to = '<[email protected]>';  
    $from = '<' . $email . '>'; 
    $subject = 'Form Submission'; 
    $message = ' 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head></head> 
    <body> 
    <table> 
     <tr><td>Content Link:</td><td>' . nl2br($content_link) . '</td></tr> 
     <tr><td>Email:</td><td>' . $email . '</td></tr> 
     <tr><td>Viewport Size:</td><td>' . $viewport_size . '</td></tr> 
     <tr><td>Browser/OS:</td><td>' . $browser . '/' . $os . '</td></tr> 
     <tr><td>Current Page:</td><td>' . $current_page . '</td></tr> 
    </table> 
    </body> 
    </html>'; 

    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= 'From: ' . $from . "\r\n"; 

    mail($to,$subject,$message,$headers); 
+1

자바 스크립트 등을 제출하는 사람들을 막기 위해 데이터를 반향하는 htmlentites ($ value). – Waygood

+0

[email injection] (http://www.securephpwiki.com/index.php/Email_Injection)을 예방하는 데 몇 가지 작업이 필요합니다. . – datasage

답변

0

데이터베이스 호출을 수행하지 않으므로 변수 주위에 htmlentities 함수를 간단하게 래핑 할 수 있습니다. 또한 당신은 당신이 HTML 엔티티의 모든 입력을 제거하려는 경우 당신은 또한() 함수를 strip_tags를 사용하여 추출 기능을

<?php 

    extract($_POST); 

    $to = '<[email protected]>';  
    $from = '<' . $email . '>'; 
    $subject = 'Form Submission'; 
    $message = ' 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head></head> 
    <body> 
    <table> 
     <tr><td>Content Link:</td><td>' . nl2br(htmlentities(trim($content_link))) . '</td></tr> 
     <tr><td>Email:</td><td>' . htmlentities(trim($email)) . '</td></tr> 
     <tr><td>Viewport Size:</td><td>' . htmlentities(trim($viewportsize)) . '</td></tr> 
     <tr><td>Browser/OS:</td><td>' . htmlentities(trim($browser)) . '/' . htmlentities(trim($os)) . '</td></tr> 
     <tr><td>Current Page:</td><td>' . htmlentities(trim($current_page)) . '</td></tr> 
    </table> 
    </body> 
    </html>'; 

    $headers = "MIME-Version: 1.0" . "\r\n"; 
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n"; 
    $headers .= 'From: ' . $from . "\r\n"; 

    mail($to,$subject,$message,$headers); 
+0

나는 또한 $ email = '<'에서 줄에 $ 전자 메일을 이스케이프 처리하지 않아도됩니다. $ 이메일. '>'; – Matt

0

를 사용하여 게시물에 변수를 할당 단순화 할 수 있습니다. 갈 수있는 한 가지 방법 년대 feilds에

strip_tags() Example

0

를 사용하여 일반 expresions가 다른 당신이 filter_var에 플래그를 많이 통과 할 수 filter_var('[email protected]', FILTER_VALIDATE_EMAIL)을 사용하는 것입니다 ($ _ POST는 [ '내용', FILTER_SANITIZE_STRING)가 많이있다 필터를 사용하여 문서를 살펴보고 누군가가 CC BCC를 주입 할 수 있으므로 이메일에 특히주의하십시오. htmlentities, htmlcharacters, 나는 이것이 정규식이나 filter_var를 사용하게 될지도 모르는 많은 방법이 있음을 의미합니다.

+0

htmlentities 또는 htmlcharacter가 전자 메일 삽입을 방지합니까? – Matt

관련 문제