2013-07-06 58 views
2

我一直在看幾個帖子,看看如何防範各種形式的'注入'攻擊。你可以使用PHP Explode()來防禦注入攻擊嗎?

What's the best method for sanitizing user input with PHP?是一個令人敬畏的帖子,並且對數據庫非常有幫助,但是我想要做的一件事是防禦我的郵件服務器被某人'註冊'使用,並使用一串逗號分隔的電子郵件地址來垃圾郵件。這是一個似乎並不經常看到的話題。

是的,驗證碼(或等效)已到位,這更適用於剪切並粘貼到電子郵件字段中的一長串逗號分隔值的討厭用戶。

我希望爆炸,然後只採取數組中的零元素將是最好的方式拋出其餘的,但如果任何人有其他的想法或方法,那麼很高興閱讀它們。

$emails_passed = explode(",", $_POST['email_field']); // could also use $_GET 
$email_to = $emails_passed[0]; 
+0

HTML5包括會爲您整理以及現場的電子郵件。 http://www.w3schools.com/html/html5_form_input_types.asp – DevZer0

+0

謝謝@ DevZer0我不清楚 - 對不起。我喜歡HTML5選項,並已經HTML5'我的網頁,但遺憾的是並不是每個瀏覽器(但)處理好 - 我不能等待。 –

回答

3

嗯,是的,你可以,但這不是明智的做法。簡單檢查是否給出了有效的電子郵件,請參閱php validation, first example進行一些基本的電子郵件驗證。有效的電子郵件不包含逗號。

所以,如果它有一個逗號是無效的,所以你應該對用戶說,請給一個有效的電子郵件。認爲,以爆炸方式解決問題然後使用爆炸

上面的故事只有當你允許單個電子郵件([email protected])像甘姆勃注意到在評論the specs逗號在電子郵件中指出。

因爲你的問題是要防止人們給多個電子郵件,所以你「垃圾郵件」他們。我仍然建議驗證電子郵件和檢查。

希望額外的信息,這要歸功於濃湯幫助

+0

消毒是修復無效用戶輸入的行爲。如果用戶不能被詢問,這應該只會發生。如果用戶因爲他剛剛提交了一個表單並且正在等待接受確認信息而被問到,請向他提供錯誤列表並且不接受表單。 – Sven

+2

-1你錯了:''foo,bar「@ example.com'是一個有效的電子郵件地址。 – Gumbo

+0

據我所知,這不是一個有效的電子郵件,而是電子郵件的組合([email protected]和[email protected])。同樣在這個問題的情況下爆炸是行不通的。 – MKroeders