![](/img/trans.png)
[英]PHP htmlspecialchars() function error when trying to use UTF-8 string
[英]when to use htmlspecialchars() function?
嗨,我想知道什么时候使用 htmlspecialchars() 合适。 是在将数据插入数据库之前还是从数据库中检索它们时?
您应该只在将数据回显到 HTML 时调用此方法。
不要将转义的 HTML 存储在您的数据库中; 它只会使查询更烦人。
数据库应该存储您的实际数据,而不是它的 HTML 表示。
您可以使用htmlspecialchars
每次输出内容中的HTML,所以它interperted的内容,而不是HTML。
如果您允许将内容作为 HTML 处理,那么您至少为漏洞打开了大门,最坏的情况是全面的 XSS 黑客攻击。
保存用户输入数据库的确切内容。 然后在向公众显示时,使用htmlspecialchars()
,以便它提供一些 xss 保护。
指南 - 如何在 PHP 中使用 htmlspecialchars() 函数
首先,您必须了解一个简单的概念:渲染。
什么是渲染? 渲染是 HTML 转换时
<b>Hello</b>
像这样大胆你好。 那是渲染。
那么...什么时候使用 htmlspecialchars() 函数?
无论您想在何处呈现 HTML 内容。 例如,如果您使用 JQuery 并执行以下操作:
$("#YourDiv").html("<b>Hello</b>");
div 内容将是Hello 。 它将文本呈现为 HTML。
如果要以这种方式显示消息(由用户编写):
<b>Hello</b>
你必须把:
$("#YourDiv").text("<b>Hello</b>");
这样,Hello 将永远不会被呈现。
如果您想将消息(由用户编写)加载到文本框、文本区域等中……您必须输入:
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
那会显示
<b>Hello</b>
在Textbox里面没有问题。
结论:
用户输入到您的表单中的任何数据等等...像往常一样保存数据。 不要使用任何功能。 如果用户发送 12345 则按原样保存。 不要过滤任何东西。 您只需要在将页面中的数据显示给用户时进行过滤。 您,只有您自己决定是否要呈现用户所写的内容。 *记住这一点。
问候!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.