2008-09-22 48 views
1

在網站上,如果我有一個表單,用戶可以輸入一些文本,然後顯示一個顯示用戶輸入內容的頁面,我知道html將用戶輸入的值編碼以防止腳本攻擊。如果表單發送的是HTML電子郵件,我認爲我會做同樣的事情,但電子郵件有沒有特殊情況,並且電子郵件客戶端是否會運行注入到電子郵件中的任何腳本?對電子郵件的用戶輸入進行編碼

回答

0

在將發佈的內容分配給電子郵件的HTML正文之前,您一定要進行HTML編碼。您的代碼應該已經拒絕諸如「< script>」之類的內容無效,而不僅僅是在電子郵件的情況下,但在所有情況下。

有沒有其他的考慮,你需要擔心。

0

我相信通過將電子郵件正文標記爲文本/純文本可以避免javascript和/或html攻擊(但我不會信任遵循頭文件提示的前景)。

0

你應該使用一個SMTP庫,它承擔由重複或丟失轉義引起的任何負擔(和潛在的錯誤)。然後,只使用純文本郵件(文本/純文本)。

爲了避免有問題的郵件客戶端的安全問題,您還可以發送幾乎爲空的郵件,並將文本作爲附件發送(文件擴展名爲「.txt」,內容類型爲「text/plain」)。

1

雖然在發送文檔之前從文檔中剝離<script>標籤仍然是個不錯的主意,但我認爲威脅較低。我相信你會很難找到一個電子郵件客戶端(仍然得到支持),它不會在呈現電子郵件之前剝離腳本。

0

我強烈建議使用現有的經過測試的解決方案發送郵件。如果您將用戶輸入傳遞給PHP mail()函數(即使使用HTML編碼),攻擊者也有可能製作一個實際包含標題的「主體」,以創建多部分消息。

相關問題