何时使用htmlspecialchars()函数?

嗨,我想知道什么时候是适当的地方使用htmlspecialchars()。 在将数据插入数据库之前还是从数据库中检索数据之前?

只有在将数据回送到HTML时才应调用此方法。

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

你使用htmlspecialchars 每次你在HTML中输出内容,所以它是interperted作为内容而不是HTML。

如果您允许将内容视为HTML,那么您至less已经打开了错误的大门,最坏的情况是总的XSS被黑客入侵。

保存用户input数据库的确切内容。 那么当显示给公众时,使用htmlspecialchars() ,以便它提供一些xss保护。

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

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

什么是渲染? 渲染是在HTML转换的时候

 <b>Hello</b> 

大胆的像这样你好 。 这是渲染。

那么…何时使用htmlspecialchars()函数?

无论你想呈现HTML内容。 例如,如果你正在使用JQuery,你这样做:

 $("#YourDiv").html("<b>Hello</b>"); 

div的内容将是你好 。 它将文本呈现为HTML。

如果要以这种方式显示消息(由用户编写):

 <b>Hello</b> 

你必须把:

 $("#YourDiv").text("<b>Hello</b>"); 

这样,你就永远不会被渲染。

如果你想加载消息(如用户写的)到一个文本框,textarea等…你必须把:

 <input type="text" class="Texbox1" value=""> <script> $(".Textbox1").val("<b>Hello</b>"); </script> 

这将显示

  <b>Hello</b> 

在文本框内没有问题。

结论:

用户input到表单中的数据等等…正常地保存数据。 不要使用任何function。 如果用户发送12345保存原样。 不要过滤任何东西。 您只需在要将页面中的数据显示给用户时进行过滤。 您,只有您决定是否要渲染用户写的内容。 *请记住。

问候!