【发布时间】:2018-04-02 17:44:32
【问题描述】:
我有一个需要主题、姓名、电子邮件和消息的小型联系表单。所有这些字段都经过以下处理:
function sanitize($string){
return htmlentities($string, ENT_QUOTES, 'UTF-8');
}
我使用 PHP 中的 mail() 函数发送电子邮件,并使用 subject 字段作为电子邮件标题/主题。问题是在主题中我有一个单引号:
I'd like to explore
但是在我清理它之后,我在收件箱中收到了电子邮件,但是那个单引号被清理了并且看起来像这样:
I'd like to explore
如何确保我的表单安全,但同时如何让我的电子邮件主题使用单引号而不是 'd-thing?
【问题讨论】:
-
安全来自于您如何处理用户生成的输入。当您想将用户生成的内容打印为 html 时,Htmlentities 很有用。但是,如果您处理的是纯文本,则可以将其存储为纯文本。您无需跳过转换过程。
-
@k0pernikus 你应该把这一切都放在答案中
-
编码与清理不同。编码为 HTML 对电子邮件、数据库、JavaScript、URL 等没有帮助。不要盲目地将所有内容编码为 HTML。
标签: php html-encode html-escape-characters