2012-09-08 64 views

回答

2

你說的是email injection安全漏洞。舉例來說,如果你傳遞自定義標頭的mail()功能,如下面的代碼示例,你是脆弱的:

<?php 
$additional_headers = "Reply-To: {$_GET['user_email']}"; 
mail($to, $subject, $message, $additional_headers); 
?> 

認爲這是一個惡意用戶通過不僅是他的電子郵件,而且還附加頭這樣:

<?php 
//$_GET['user_email'] = "[email protected]";// this is what you expect 
// this is what you're getting actually 
$_GET['user_email'] = "[email protected]\r\nBcc: [email protected], ..."; 
?> 

那麼惡意用戶會從你的服務器在你的名字送他的所謂垃圾纏身的消息抄送給幾乎無數的用戶列表。人們甚至可以用他自己的這種方式完全替代你的消息,通過添加某些其他安全的MIME頭文件。你只能想象這會帶來什麼後果!

解決方案很簡單:不要信任您從用戶處收到的任何內容,並過濾/驗證接收到的數據。

0

如果輸入未正確過濾,任何表單都很脆弱。無論它是電子郵件表單,註冊表單還是由PHP支持。

對於電子郵件表格,請考慮使用PHP的filter functions來正確清理電子郵件。

一個很好的經驗法則是記住FIFO:過濾器輸入,轉義輸出。

超全球植物應該被認爲很髒並且需要過濾(輸入)。輸出轉義取決於上下文:發送電子郵件給某人,插入數據庫,以HTML呈現 - 所有這些都需要不同的輸出過濾技術。

+0

挑剔,但FIFO如何:過濾器輸入,逃生輸出。如果它不是FIEO –