問題很簡單:我應該在使用PHPmailer類時使用任何類型的消毒方法嗎?PHPMailer消毒
我做了簡單的發送郵件的形式,使用phpmailer類發送電子郵件。我確信我只使用「htmlspecialchars」進行消毒(雖然我讀過這樣的消息,但這個消息並不是100%可靠的)。
我試圖在標籤之間發送一些js代碼,並且我收到了它的消毒,但我不確定是否可以完成某種類型的攻擊。
問題很簡單:我應該在使用PHPmailer類時使用任何類型的消毒方法嗎?PHPMailer消毒
我做了簡單的發送郵件的形式,使用phpmailer類發送電子郵件。我確信我只使用「htmlspecialchars」進行消毒(雖然我讀過這樣的消息,但這個消息並不是100%可靠的)。
我試圖在標籤之間發送一些js代碼,並且我收到了它的消毒,但我不確定是否可以完成某種類型的攻擊。
您不需要發送給PHPMailer的除了檢查,如果輸入的電子郵件地址是有效的電子郵件地址,或不前,消毒什麼。
數據清理有兩個原因:SQL注入和XSS或CSRF(Xross站點腳本或跨站點請求僞造) 無論是哪種情況,用戶都必須根據輸入查看輸出內容。
然而,你問過關於郵件類的消毒是好的,因爲理想情況下沒有人會要求它。 HTML標籤?當然你可以發送HTML標籤!您可以將content-type定義爲text/html
您需要清理什麼?
附件類型!不管郵件客戶端的利用總是在附件中找到。只允許以下MIME類型:
image/jpeg','image/pjpeg','image/gif','image/png','application/msword','application/vnd.ms-office', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/vnd.openxmlformats-officedocument.wordprocessingml.template','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet','application/vnd.openxmlformats-officedocument 'presentationml.presentation','application/pdf'
不推薦檢查文件的擴展名!因爲,郵件客戶端可能會使用像get_file_contents()這樣的函數,它只會在瀏覽器中打開該文件,並且如果它嵌入了JavaScript擴展名的JavaScript,它仍然會執行! (它在IE6/IE7中做了),然而,那又是瀏覽器工作具有強大的解析機制。 Content-Sniffing
請確保您有大小限制。
利用可能或不可能在郵件中,郵件客戶端必須照顧它。但是,作爲郵件終端編碼器,這些是您應該關注的兩件事情。
希望幫助:)
我個人不相信任何輸入,所以我會清理所有的東西。例如要注意的一點是,你可能使用htmlspecialchars,但如果有人使用非英文字符會發生什麼?您將需要使用UTF-8作爲參數來定義字符集。
這個簡單的省略(而不是我說你沒有省略它)會導致XSS攻擊。
我的投票爲HTMLPurifier。這是一個非常知名且安全的圖書館,它可以讓您將輸入消毒的程度遠高於htmlspecialchars。
/0.02
這個沒有花莖HTML代碼一樣:<ê>像: <腳本> 警報( 'run lola run'); < /腳本> –
實際上它的確如此,HTMLPurifier在默認情況下不允許使用腳本標記,您必須先設置setTrusted(TRUE),然後才允許在過濾器中使用腳本。 –
SMTP頭注入是一個風險 - 從電子郵件特別的主題行 - 中去掉任何控制字符,尤其是換行。您可能還需要將您的電子郵件正文換行。 –
TNX的意見,但我認爲這不會是一個問題,我不使用SMTP通過的PHPMailer發送郵件(只是簡單的PHP溫控功能 – SomeoneS