2014-03-14 82 views
2

如果我的输入不允许<和>字符,可能会发生XSS攻击吗?XSS没有HTML标签

Example: I enter <script>alert('this');</script> text 

但如果我删除<和>脚本不是文本:

I enter script alert('this'); script text 
+0

如何渲染用户的输入? AKA,打印它的代码在哪里? –

+0

用户输入呈现为纯文本(未转义),删除字符< and > – VMOrtega

+0

从头顶开始,仍然可以确定使用UTF-7编码的XSS。然后,它取决于文本呈现的上下文(即,它仅在标记内,或者在textarea的更具体的上下文中,或者在html标记内等等) –

回答

-2

我认为这是不可能的。 HTML标签在这次攻击中非常重要,所以网站可以阅读/理解我们提出的问题。但是,如果用于文本加载注入,可能有或没有HTML标签。

4

如果用户提供的输入打印HTML属性里面,你还需要逃避引号,或者你会很容易受到输入这样的:

" onload="javascript-code" foobar=" 

你也应该大致逃脱符号字符,因为它需要在HTML文档中进行编码,否则可能会破坏您的布局。

所以,你应该照顾以下字符:<> &“”

您应该然而没有完全剥夺他们却用正确的HTML代码,即& LT代替它们; & GT; &放大器; & QUOT; &#X27;

5

是的,它仍然是可能的

例如,假设您的网站喷射用户输入到以下位置

<img src="http://example.com/img.jpg" alt="USER-INPUT" /> 

USER-INPUT如果是" ONLOAD="alert('xss'),这将提供必要的

<img src="http://example.com/img.jpg" alt="" ONLOAD="alert('xss')" /> 

无尖括号中。

此外,请检查出OWASP XSS Experimental Minimal Encoding Rules

对于HTML体:

HTML实体编码< &

在元标记指定的字符集,以避免UTF7 XSS

对于XHTML体:

HTML实体编码< &>

限制输入到charset http://www.w3.org/TR/2008/REC-xml-20081126/#charsets

所以身体内,你可以逃脱只是编码(或拆除)字符的子集通常建议以防止XSS。但是,你不能属性中做到这一点 - 全XSS (Cross Site Scripting) Prevention Cheat Sheet提出以下建议,和他们没有一个最小的选择:

除了字母数字字符,逃避与HTML实体&#xHH;格式,包括所有空格字符。 (HH =十六进制值)

的主要是虽然以覆盖三种类型的指定的属性值的方法:

  • 无报价
  • 单引号
  • 双引号

以这种方式进行编码将在所有三种情况下防止属性值中的XSS。

也要警惕UTF-7攻击不需要角括号字符。但是,除非将字符集显式设置为UTF-7,否则这种攻击类型为isn't possible in modern browsers

+ADw-script+AD4-alert(document.location)+ADw-/script+AD4-