如果我的输入不允许<和>字符,可能会发生XSS攻击吗?XSS没有HTML标签
Example: I enter <script>alert('this');</script> text
但如果我删除<和>脚本不是文本:
I enter script alert('this'); script text
如果我的输入不允许<和>字符,可能会发生XSS攻击吗?XSS没有HTML标签
Example: I enter <script>alert('this');</script> text
但如果我删除<和>脚本不是文本:
I enter script alert('this'); script text
我认为这是不可能的。 HTML标签在这次攻击中非常重要,所以网站可以阅读/理解我们提出的问题。但是,如果用于文本加载注入,可能有或没有HTML标签。
如果用户提供的输入打印HTML属性里面,你还需要逃避引号,或者你会很容易受到输入这样的:
" onload="javascript-code" foobar="
你也应该大致逃脱符号字符,因为它需要在HTML文档中进行编码,否则可能会破坏您的布局。
所以,你应该照顾以下字符:<> &“”
您应该然而没有完全剥夺他们却用正确的HTML代码,即& LT代替它们; & GT; &放大器; & QUOT; &#X27;
是的,它仍然是可能的
例如,假设您的网站喷射用户输入到以下位置
<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-
如何渲染用户的输入? AKA,打印它的代码在哪里? –
用户输入呈现为纯文本(未转义),删除字符< and > – VMOrtega
从头顶开始,仍然可以确定使用UTF-7编码的XSS。然后,它取决于文本呈现的上下文(即,它仅在
标记内,或者在textarea的更具体的上下文中,或者在html标记内等等) –