我正在创建反馈网页。我想用一个用户输入的文本区域并使用mail
函数将其发送给自己。执行以下操作是否安全:
mail("me@blah.com", "Feedback!", $_POST['feedback'], "From: myself@blah.com");
/* (to) (subject) (message) (headers) */
或者我是否需要以某种方式逃避或消毒$_POST['feedback']
?
答案 0 :(得分:2)
是的,你应该将其作为一般做法进行消毒,但这里没有太多可能出错的地方,只需确保在您指定的标题中:
Content-Type: text/plain
然后没有用户可以发送任何“恶意”给你点击,执行某种跟踪等等。(编辑:当然不知道它是什么;我的意思是,没有误导性的链接,1x1透明GIF等)
答案 1 :(得分:1)
正如stilstanding所说 - 你仍然需要清理任何用户提供的数据。
我还建议使用像PHPMailer这样的脚本来创建和发送电子邮件。这将安排格式化邮件,并使发送多部分HTML /文本消息等任务变得更加容易:
答案 2 :(得分:0)
取决于谁收到邮件。例如。如果它是GMail,他们有自己的公平武器逃避任何东西,任何人都会很难注入任何东西。但是,如果有人要查看来自某些网络邮件的邮件,并且该网页邮件是过时的版本,那么意图不好的人可能会做坏事。
如果您不打算检查<script>
标签等,则必须不进行转义。但是你最好用quoted-printable对你的电子邮件进行编码,以获得可传递性而不是安全性,这项任务最好由一个好的邮件类/函数Zend_Mail完成。并且您可以独立使用它(即没有其他库组件)。
答案 3 :(得分:0)
如果您要发送纯文本邮件,我认为您不必担心编码。 PHP的邮件功能应该处理所需的任何编码。
如果您要发送HTML消息,那么无论值是否来自用户,您都需要对所有HTML属性和内容进行HTML编码。