跨站脚本 (XSS):我需要转义 & 符号吗?
我想在 HTML 上下文中转义 XSS,到目前为止,我处理的是 <
、>
和 "
字符。 显然也建议转义 & 符号,但为什么呢? (除了保持 HTML 有效之外,我们假设这不是问题)
所以我要问的是: 当我转义 <
、>
和 "
时,有人可以演示 & 符号如何在 HTML 上下文中仍然允许 XSS 攻击吗?
干杯!
I want to escape for XSS in an HTML context, and so far I treat the <
, >
, and "
characters.
Apparently it is recommended to escape the ampersand as well, but why? (Other than for keeping the HTML valid, let's assume that this is not an issue)
So what I am asking is:
When I escape <
, >
and "
, can someone demonstrate how the ampersand can still allow an XSS attack in an HTML context?
Cheers!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您确实应该看一下 OWASP XSS Prevention Cheat Sheet。
你应该逃跑&因为它可以用来规避其他防御。考虑以下代码:
为了防御 onclick 事件处理程序内的 XSS,开发人员在 data_from_user 中转义 '、"、< 和 > 并认为一切正常。问题是,如果攻击者键入
'
通过了转义,但最终允许攻击者运行 javascript。示例如下:http://erlend.oftedal.no/blog/?blogid=124
You should really take a look at the OWASP XSS Prevention Cheat Sheet.
You should escape & because it can be used to circumvent other defenses. Consider this code:
To defend against XSS inside the onclick event handler, the developer escapes ', ", < and > in data_from_user and thinks everything is ok. The problem is that if the attacker types
'
which passes the escaping, but ends up allowing the attacker to run javascript.Example here: http://erlend.oftedal.no/blog/?blogid=124
你使用 &连接 URL 中的参数:
Reflected XXS:
脚本代码被注入到网页向受害者反映的 URL 中
you use & to concatenate params in the URL:
Reflected XXS:
Script code is injected in the URL which the webpage reflects to victims