【发布时间】:2012-08-20 20:04:43
【问题描述】:
这里的第二段代码http://anautonomouszone.com/blog/xss-cheat-sheet,声称通过url编码绕过html特殊字符过滤(意思,):
Bypass filter when it strips <script> tags:
%253cscript%253ealert(document.cookie)%253c/script%253e
显然这是 URL 编码,它使服务器不知道原始内容,但我看不出它何时会转换回 <script>。
服务器像这样得到它,然后把它发回去。 HTTP 内容未编码,因此用户将按原样获取。
我错过了什么? php函数htmlspecialchars是这样吗?
编辑:
在我在聊天中被误解之后,我会尽量让自己清楚。
这取自 XSS 备忘单。和其他 XSSes 教程。意思是,这是一种尝试绕过一些针对 XSS的方法。
我想理解的很简单:
- 它可以绕过哪些方法(即在什么情况下这对攻击者有帮助)?
-
是如何发生的?什么时候解码回到 http-respone 中的
<script>? - 我可以做些什么来避免我的网站出现这种情况?
注意,这在许多网站中都有,所以它可能不是指百万分之一的开发人员错误,而是在某种程度上很可能发生的事情。
非常感谢。
【问题讨论】:
-
我认为一些浏览器(IE?!)仍然将其解释为
-
IE 不会对 html 进行 url 解码,也不会对整个 http-response-content 进行解码。我刚刚检查过。
-
当服务器 URL 解码两次时,您将获得
<script>…。 -
为什么会被解码两次?它在 http 响应内容上,它不应该被解码一次..
-
它在哪里声明它绕过了 htmlspecialchars 过滤器?看起来更像是黑名单过滤器预防。