您好 我想知道何时适合使用htmlspecialchars()。是在将数据插入数据库之前还是从数据库中检索数据时?
答案 0 :(得分:30)
只有在将数据回显为HTML时才应调用此方法。
不要在数据库中存储转义的HTML;它会让查询更加烦人 数据库应存储您的实际数据,而不是其HTML表示。
答案 1 :(得分:12)
您使用htmlspecialchars
每隔时间在HTML中输出内容,因此它是内容而不是HTML。
如果您允许将内容视为HTML,那么您至少可以打开错误的大门,最糟糕的是总XSS黑客攻击。
答案 2 :(得分:4)
保存用户输入数据库的确切内容。
然后在将其显示给公众时,使用htmlspecialchars()
,以便它提供一些xss保护。
答案 3 :(得分:1)
指南 - 如何在PHP中使用htmlspecialchars()函数
首先,您必须了解一个简单的概念:渲染。
Render是什么? 渲染是HTML转换的时间
<b>Hello</b>
像这样加粗你好。这是渲染。
所以...何时使用htmlspecialchars()函数?
您想要呈现HTML内容的任何位置。 例如,如果您正在使用JQuery并执行此操作:
$("#YourDiv").html("<b>Hello</b>");
div内容为 Hello 。它将文本呈现为HTML。
如果要以这种方式显示消息(由用户编写):
<b>Hello</b>
你必须把:
$("#YourDiv").text("<b>Hello</b>");
这样就永远不会呈现Hello。
如果你想把消息(由用户写的)加载到文本框,textarea等中...你必须把:
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
将显示
<b>Hello</b>
文本框内没有问题。
<强>结论:强>
用户输入表格的数据等等......正常保存数据。 不要使用任何功能。如果用户发送12345保存原样。不要过滤任何东西。您只需要在将页面中的数据显示给用户时进行过滤。你,只有你决定是否要渲染用户所写的内容。 *记住这一点。
问候!