何时使用 htmlspecialchars() 函数?
你好 我想知道什么时候是使用 htmlspecialchars() 的合适位置。是在将数据插入数据库之前还是从数据库检索数据时?
Hi
I was wondering when is the appropriate place to use htmlspecialchars(). Is it before inserting data to database or when retrieving them from the database?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您应该仅在将数据回显为 HTML 时调用此方法。
不要将转义的 HTML 存储在数据库中;它只会让查询变得更烦人。
数据库应该存储您的实际数据,而不是其 HTML 表示形式。
You should only call this method when echoing the data into HTML.
Don't store escaped HTML in your database; it will just make queries more annoying.
The database should store your actual data, not its HTML representation.
每次在 HTML 中输出内容时,您都会使用
htmlspecialchars
每次,因此它会被解释为内容而不是 HTML。如果您允许将内容视为 HTML,那么您至少会为错误打开大门,而最坏的情况下则可能会导致 XSS 黑客攻击。
You use
htmlspecialchars
EVERY time you output content within HTML, so it is interperted as content and not HTML.If you allow content to be treated as HTML, you have just opened the door to bugs at a minimum, and total XSS hacks at worst.
保存用户输入数据库的确切内容。
然后当向公众显示它时,使用
htmlspecialchars()
,这样它就提供了一些xss保护。Save the exact thing that the user enters into the database.
then when displaying it to public, use
htmlspecialchars()
, so that it offers some xss protection.指南 - 如何在 PHP 中使用 htmlspecialchars() 函数
首先,您必须了解 1 个简单的概念:渲染。
渲染是什么?
渲染是指 HTML 转换
为粗体,如 Hello。这就是渲染。
那么...何时使用 htmlspecialchars() 函数?
无论您想要在何处呈现 HTML 内容。
例如,如果您使用 JQuery 并执行以下操作:
div 内容将为 Hello。它将文本呈现为 HTML。
如果你想以这种方式显示消息(由用户编写):
你必须输入:
这样,Hello 将永远不会被渲染。
如果您想将消息(由用户编写的)加载到文本框、文本区域等中...您必须输入:
这将
毫无问题地显示在文本框内。
结论:
用户在表单等中输入的数据是什么...照常保存数据。
不要使用任何功能。如果用户发送 12345 则按原样保存。不要过滤任何东西。仅当您要向用户显示页面中的数据时才需要进行过滤。您,只有您决定是否要渲染用户编写的内容。 *记住这一点。
问候!
Guide - How to use htmlspecialchars() function in PHP
To begin you have to understand 1 simple concept: Render.
What Render is?
Render is when the HTML transforms
to bold like this Hello. That's render.
So...When to use the htmlspecialchars() function?
Wherever you want to render HTML contents.
For example, if you are using JQuery and you do this:
The div contents will be Hello. It rendered the text into HTML.
If you want to display the message in this way (was wrote by user):
you have to put:
In that way the Hello will never be rendered.
If you want to load the message (as wrote by user) into a textbox, textarea, etc... You have to put:
That will display
Inside the Textbox without problems.
Conclusion:
What ever data the user input into your forms, etc...Save the data as normally.
Do not use any function. If user sent 12345 save as it is. Do not filter nothing. You only have to filter when you are going to display the data in the page to the users. YOU, ONLY YOU decide if you want to render or not what the user wrote. *Remember that.
Regards!