【发布时间】:2019-05-21 20:16:40
【问题描述】:
我正在处理我们网站上的一些Reflected Cross-site scripting (XSS) 漏洞(php、html、...)AppSpider 报告了一个我无法解决的问题。
Location: javascript:alert(10829224)
通常 AppSpider 会列出带有 js 的 url。这次没有。它只列出查询字符串:url=javascript:alert(12345)
当我尝试通过将其添加到列出的页面的 url 来进行测试时,我什么也得不到:/path/to/page.html?url=javascript:alert(12345) 如果我添加脚本标签:/path/to/page.html?url=<script>javascript:alert(12345)</script> 我会弹出警报。
问题 1- 没有脚本标签的 javascript:alert() 是否有效?可行的js?
问题 2- 我怎样才能逃避或防止这种类型的攻击?
我们有代码可以过滤掉坏的 unicode 字符(感谢:http://stackoverflow.com/questions/3466035/how-to-skip-invalid-characters-in-xml-file-using-php)。它在取消<script></script> 标签方面效果很好,但显然在这种情况下它没有帮助。
感谢任何提示或技巧
【问题讨论】:
-
使用正则表达式正确过滤您的 URL: Replace(url, @"[^-A-Za-z0-9+&@#/%?=~_|!:,.;() ]", "");并在您收到的所有输入上运行它。永远不要相信输入。
-
How does XSS work?的可能重复
标签: javascript php xss