2014-07-09 31 views
0

閱讀了很多教程後,我只想確保安全。從SQL注入使mail()php文件安全

我做了一個接觸公式推它看起來像這樣

<form name="contakt" accept-charset="UTF-8" method="post" action="./mail.php"> 
<input type="text" name="name" /> 
<input type="text" name="email" /> 
<input type="text" name="tel" /> 
<input type="submit" value="Send" name="submit" /> 
<textarea name="message"></textarea> 
</form> 

我通過jQuery驗證如果用戶名和消息不是空的,不但充滿空間

,我通過使用jQuery檢查電子郵件下面的腳本

function ismailornot(email) { 
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
return regex.test(email); 
} 

現在,當我的變量獲得通過,我對我的mail.php是它更多的則足以檢查上面的腳本我的$ _ SERVER ['HTTP_REFE RER']並查看這些變量是否來自我自己的腳本?或者你也可以修改$ _SERVER變量嗎?

或者我基本上再次檢查EVERY傳遞的變量是否安全?

例如:http://www.w3schools.com/php/php_secure_mail.asp 此腳本是否可以安全注射?

謝謝你幫我出:)

+0

如果您單獨使用Javascript進行檢查,則不檢查任何內容。依靠Javascript在用戶提交頁面之前通知用戶錯誤,而不是用於消毒。 – miken32

+0

從SQL注入保存郵件()函數保存...我是唯一一個獲得該句子的網絡 –

+0

製作一個包含郵件()函數的php文件,該函數安全於gettin'頭部注入濫用。 試圖以某種方式縮短它...看起來像我失敗了。 @ miken32 - 我只是使用JS提醒各種錯誤的用戶 - 只是增加了原因我不確定它是否對我的問題很重要。 – Kris

回答

2

方式:檢查每一個通過再次變量是在安全方面

+0

是啊我只是搜索了一下,看到「HTTP_REFERER」是可濫用的:( – Kris

1

試試這個有些MODS後,根據自己的需要從它的拉里·厄爾曼書一張:

function spam_scrubber($value) { 

    // List of very bad values: 
    $very_bad = array('to:', 'cc:', 'bcc:', 'content-type:', 'mime-version:','multipart-mixed:', 
    'content-transfer-encoding:', '<script>'); 

    // If any of the very bad strings are in 
    // the submitted value, return an empty string: 
    foreach ($very_bad as $v) { 
     if (stripos($value, $v) !== false){ return '';} 
    } 

    // Replace any newline characters with spaces: 
    $value = str_replace(array("\r", "\n", "%0a", "%0d"), ' ', $value); 

    //remove html tags: 
    $value = htmlentities($value,ENT_QUOTES); 

    // Return the value: 
    return trim($value); 

} // End of spam_scrubber() function. 

// Clean the form data: 
$scrubbed = array_map('spam_scrubber', $_POST); 

if(isset($from)) { 
    $from = $scrubbed['from']; 
}else{ 
    $from = ''; 
} 

// Minimal form validation: 
if (!empty($from) && !empty($scrubbed['comments'])) { 

    // Create the body: 
    $body = "Name: {$from}\n\nComments: {$scrubbed['comments']}"; 
    $body = wordwrap($body, 70); 

    // Send the email: 
    mail('YOUR_EMAIL', 'Contact Form Submission', $body, "From: {$from}"); 
} 
+0

@ Kris並始終在服務器端驗證! – bart