htmlspecialchars() 应该用于输入信息还是输出之前?
我获取 $_POST 信息并将其存储在数据库中,稍后查询并将此信息打印给用户。我应该在插入此信息之前使用 htmlspecialchars() 还是在查询它之后然后输出它?
此外,我需要用户能够使用引号和其他日常特殊字符。我知道我可以使用标志 ENT_NOQUOTES 但感觉如果我这样做就会留下安全漏洞。
我的网站允许 Bbcode,我希望用户能够使用日常字符而不必看到“amp;lt;<?>&”。
对我有耐心<---鼓励菜鸟! 谢谢:D
I take $_POST information and store it in a DB and later on query and print this information to the user. Should I use htmlspecialchars() before inserting this info or after I query it before I output it?
In addition I need the ability for users to have the ability to use quotes and other everyday special chars. I know I can use the flag ENT_NOQUOTES but it feels like if I do that it leaves security holes.
My site allows Bbcode and I want users to be able to use everyday characters without having to see "amp;lt;<?>&".
Patience with me <--- noob is encouraged!
Thanks :D
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在插入目标代码之前转义数据。即在输出之前。
这意味着您将保留数据的原始形式用于其他目的(例如输出给用户进行编辑,包括在电子邮件中、生成 PDF、搜索等)
htmlspecialchars()
会将输入数据中的引号转换为 HTML。所以你不需要做任何特别的事情。那么你需要有一个合适的 BBCode 解析器。
Escape data for the target code just before you insert it. i.e. Just before you output it.
This means that you will keep the data in its original form for other purposes (e.g. outputting to the user for editing, including in an email, generating a PDF, searching, etc)
htmlspecialchars()
will convert quotes in the inputted data into HTML. So you don't need to do anything special.Then you need to have a proper BBCode parser.
在输出之前使用
htmlspecialchars()
以避免 XSS。并且数据库应该更好地保存用户的原始输入。htmlspecialchars()
is used before output to avoid XSS. And the database should better save the user's raw input.