什么时候使用 htmlspecialchars() 函数?

问题描述 投票:0回答:4

我想知道什么时候是合适的地方使用

htmlspecialchars()
。是在将数据插入数据库之前还是从数据库检索数据时?

php htmlspecialchars
4个回答
35
投票

您应该仅在将数据回显为 HTML 时调用此方法。

不要将转义的 HTML 存储在数据库中;它只会让查询变得更烦人。
数据库应该存储您的实际数据,而不是其 HTML 表示形式。


22
投票

在 HTML 中输出内容时,您会使用

htmlspecialchars
EVERY,因此它会被解释为内容而不是 HTML。

如果您允许内容被视为 HTML,那么您至少就为错误打开了大门,最坏的情况则是完全 XSS 黑客攻击。


4
投票

将用户输入的确切内容保存到数据库中。 然后当向公众展示它时,使用

htmlspecialchars()
,这样它就可以提供一些xss保护。


2
投票

指南 - 如何在 PHP 中使用 htmlspecialchars() 函数

首先,您必须了解 1 个简单的概念:渲染。

什么是渲染? 渲染是 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>

在文本框中没有问题。

结论:

用户在表单中输入的任何数据等...照常保存数据。 不要使用任何功能。如果用户发送 12345 则按原样保存。不要过滤任何东西。仅当您要向用户显示页面中的数据时才需要进行过滤。您,只有您决定是否要渲染用户编写的内容。 *记住这一点。

问候!

© www.soinside.com 2019 - 2024. All rights reserved.