我正在處理某些表單,並希望獲得有關如何正確製作表單以防止黑客,垃圾郵件等的建議。另外,我想知道如何正確發送此在電子郵件中填寫數據(附件也將被髮送,因此我使用enctype作爲多種形式/表格數據)。創建安全的HTML/PHP表單併發送電子郵件
爲了簡單起見,假設我在表單中只有1個字段。
<form method="post" enctype="multipart/form-data">
Address: <input type="text" name="user-address" value="<?php echo $_POST['user-address']; ?>" />
<input type="submit" value="Submit" />
</form>
現在,爲確保用戶輸入安全,我需要執行哪些步驟?例如,我知道我可以做trim()並檢查'user-address'(在$ _POST中)是否爲空。但我還應該做什麼?我一直在看關於htmlentities()和htmlspecialchars()的東西,這讓我感到困惑。我應該使用這些嗎?那麼stripslashes()呢?
在確認輸入安全後,我想發送一封電子郵件(使用PHPMailer)用戶輸入的內容。我一直注意到的是,如果用戶輸入單引號或雙引號,如&#34;顯示在電子郵件正文中而不是實際的字符。這是因爲電子郵件是作爲普通文本發送的嗎?我希望它以純文本形式發送,因爲這就是我需要的表單字段。所以我在$ _POST ['user-address']上使用了html_entity_decode(...,ENT_QUOTES),並且使它工作。但我不確定這是否是正確的方法,或者是否會造成某種安全風險。
$msg = "Address: " . html_entity_decode($_POST['user-address'], ENT_QUOTES);
//send e-mail with attachment and $msg as body
要點:我怎樣才能確保上面的簡單形式是安全的?我該如何處理電子郵件中顯示的單引號和雙引號HTML實體(假設我想發送純文本電子郵件)?
感謝您的幫助!
[在網絡上創建電子郵件表單時的安全考慮事項]的可能重複(http://stackoverflow.com/questions/1027138/security-considerations-when-creating-an-email-form-on-the-web ) – 2014-01-13 23:39:28