如果你不输出html,是否需要htmlspecialchars?

时间:2012-04-10 23:41:30

标签: php xss

我有一个脚本根据用户输入注册用户。这使用预准备语句和白名单来防止sql注入。但我很难理解XSS的预防。

根据我的理解,如果您要在页面上输出HTML,您只需要阻止XSS吗?这是什么意思???

我猜这个注册页面不适用,因为我没有输出HTML到网页?是吗?

如果我要阻止XSS,我是否使用htmlspecialchars?

3 个答案:

答案 0 :(得分:3)

一般来说,如果您在页面上显示任何返回值,或者您要将信息插入数据库以供以后检索和显示(如用户配置文件信息),您将需要使用htmlspecialchars。

对我来说,当我进行用户注册时,如果他们无法在输入字段中输入正确的值,我会使用他们输入的值重新显示页面。在这种情况下,我用htmlspecialchars编码。

如果在任何时候,您计划将数据库中的信息重新显示到网页中(如配置文件等所述),您应该使用htmlspecialchars。

更好的安全而不是遗憾我总是说 - 从不信任用户输入

答案 1 :(得分:0)

基本上,当您将用户的输入取消消毒并显示在您的网页中时,就会发生XSS。

例如:用户输入

<script>alert('hello you are hacked');</script>

在文本框中,您在网页注册后将其显示在

Hello, $username

这突然变成了

Hello, <script>alert('hello you are hacked');</script>

这是XSS

的形式之一

防止XSS的一种有效方法就是这样

echo htmlspecialchars($varname, ENT_QUOTES, 'UTF-8');

答案 2 :(得分:0)

  

据我了解,如果你是的话,你只需要预防XSS   将HTML输出到页面上?这是什么意思???

XSS是服务器在向客户端输出HTML(实际上是Javascript)时发生的一种攻击,当它不是故意这样做时(显然当恶意用户特意制作并提供该HTML时)。

  

我猜这个注册页面不适用,因为我   没有输出HTML到网页?是吗?

如果您没有输出来自用户输入的任何内容,那么您就是安全的。

  

如果我要阻止XSS,请使用htmlspecialchars吗?

是的,这就足够了。