我在我的網站上有一個PHP驅動的HTML聯繫表單。目前我使用PHP mail()功能。因此,我必須做許多用戶輸入驗證,以避免email header injection attacks。我認爲我很安全,但我可能忘記了一些東西,我想轉移到一個可靠的PHP電子郵件庫。我選擇的圖書館是Swiftmailer。使用Swiftmailer的PHP驅動的HTML聯繫表格有多安全?
現在我要檢查,如果Swiftmailer解決以下問題:
- 除去或逃避發件人名稱
<
和>
字符。 - 刪除從發送者的名字換行符(
\n
,\r\n
...)。 - 從電子郵件主題中刪除或轉義換行符。
- 正常化換行符在消息主體(電子郵件的內容)。根據PHP文檔,內容應使用
\n
,使用\r\n
作爲電子郵件標題分隔符。
PS:我試圖聯繫Swiftmailer團隊與我的問題沒有成功,所以我在這裏嘗試。
編輯:
我做了一些測試用例Swiftmailer,這是我迄今發現:
- 當你有一個
<
或>
在發送者的名字,你會得到a Undeliverable電子郵件錯誤郵件。這可能會導致郵件服務器的DOS attack(可能我錯了)。這是正常的嗎? - 換行符被轉義,所以注入攻擊失敗。
- 換行符被轉義,所以注入攻擊失敗。
- 測試,但我無法看到Swiftmailer做什麼(如果它的東西)。所以我仍然在黑暗中。
有人能澄清#1和#4我嗎?我不知道這是否是正常的行爲......
您可以通過代碼總是看...畢竟,Swiftmailer只是一個PHP腳本。如果你是這種關於漏洞的偏執狂,那麼你可能想要審覈任何外部庫。 –
'保護頭部注入攻擊而不剝奪請求數據內容'(從主頁),並通過代碼粗略掃描我會假設,如果你傳入任何無效的東西,你會得到一個異常,而不是無聲的接受。 – hakre
看來只要你從任何用戶提交的頭文件和wordwrap($ message,70)中刪除\ n和\ r,你應該沒問題。從發件人名稱中剝離< and >的交易是什麼?我很想知道這些角色給你什麼樣的黑客攻擊。任何信息非常感謝。 – dqhendricks