2012-11-14 35 views
3

我瞭解mysql_real_escape_string等等,但是當我只是發送電子郵件時呢?

因此,我有表單和文本框,是否有任何漏洞只需將$_POST數據直接通過電子郵件發送給用戶?我猜他們wouldnt能夠執行任何PHP ..或者他們,如果他們從一個Web地址運行它?我不確定。

+0

可能重複[什麼是最好的PHP輸入消毒功能?](http://stackoverflow.com/questions/3126072/what-are-the-best-php-input-sanitizing-functions) –

回答

5

如果它被直接發送到電子郵件,那麼它會沒事的。如果它存儲在數據庫中以顯示在管理員頁面上,例如幫助臺等,那麼它將需要爲html輸出和mysql轉義。使用PDO然後用準備語句

這就是說,因爲電子郵件可以包含HTML,如果你不想接收到人們僞造的HTML格式的電子郵件,例如<blink>(這真的很煩人),那麼你可以使用htmlspecialchars()http://php.net/manual/en/function.htmlspecialchars.php

如果您擔心電子郵件中使用Javascript,那麼使用上面提到的htmlspecialchars()也可以解決這個問題。

+0

不要忘記JavaScript也可以放入電子郵件中。這可能聽起來像個不好的笑話,但有些客戶支持這一點,例如雷鳥。 – nkr

+0

我的觀點正是如此。這是一種風險嗎? – Chud37

+0

已更新爲javascript。 – Adam

2

問題是不信任用戶輸入。最大的問題是,當您從POST變量中設置電子郵件地址或密件抄送時。任何電子郵件地址都可以通過請求設置。

但它可能發送鏈接或其他東西在用戶的形式。爲此,您應該實施驗證碼。 bot不能將你的表單發送給任何人。

最後一個解決方案是表單中的隱藏文本字段。你可以用CSS隱藏它們。當字段不爲空時,你知道一個bot已經填滿了它們。

但我認爲它在你逃跑的POST良好VAR提供htmlspecialchars()

所以有很多的可能性,以確保一種形式。您不僅應該使用其中之一併信任用戶。

相關問題