仅通过替换'<'来保护XSS问题和'>'

时间:2014-09-28 23:08:26

标签: html security xss

我想知道我是否可以通过<>仅替换&lt;&gt;来保护我的网站免受XSS攻击,或者我错过了什么。< / p>

示例:

 <?php echo '<div>' . $escaped . '</div>' ?>

我已经知道htmlspecialchars PHP功能&amp;分支机构

2 个答案:

答案 0 :(得分:1)

不,对于HTML正文,您还需要对&字符进行编码,以防止攻击者逃脱逃逸。

查看XSS Experimental Minimal Encoding Rules: -

  

HTML正文(最高为HTML 4.01):

     
      
  • HTML实体编码< &

  •   
  • 在metatag中指定charset以避免使用UTF7 XSS

  •   
     

XHTML正文:

     

请注意,如果要在属性值中输入内容,则需要对具有特殊含义的所有字符进行正确编码。 XSS (Cross Site Scripting) Prevention Cheat Sheet提及对以下字符进行编码: -

  

&<>"'/

您还必须引用转义的属性值才能生效。

答案 1 :(得分:0)

答案是否定的,不知怎的,有人会找到利用它的方法。

你低估了技术的数量和攻击者的创造力。阅读OWASP XSS备忘单https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet,了解这种情况可能发生的方式。在您的情况下,它是否可以防止XSS成为onload属性?或者成为一个输入,成为CSS定义的一部分?在这些情况下,您已经进入了隐式标记,因此您只需要添加JS代码,没有理由使用&#39;&lt;&#39;或&#39;&gt;&#39;

使用XSS进行输出验证,这是最简单的事情,它会保护你到处都是,只要你每次写任何东西都做(无论是否来自用户)并注意上下文(逃避) /编写链接时编码一个URL,直接编写JS脚本时为JS编译转义/编码,编写CSS定义的一部分时转义/编码为CSS,编写JSON时转义/编码JSON数据,在任何其他情况下转义/编码HTML。)

此外,即使它是无关的,我通常也会指向这个网站,以展示人们如何对JS http://www.jsfuck.com/发挥创意 - 这只是混淆,但我用它来逃避反... XSS控制,通常由第三方制作。