固定http协议的a标签不安全URL是否存在XSS注入漏洞?
结论
即便a标签的链接协议被固定为http无法修改,仍然存在XSS注入风险,常见可利用场景如下:
- HTML属性注入场景
若开发者未对用户输入的特殊字符做转义,直接将用户可控内容拼接进href属性值,示例原始渲染逻辑:
你可以构造输入内容为<a href="http://{{用户可控内容}}">跳转链接</a>" onclick="alert(document.domain)" x=",最终渲染的完整标签为:
此时href的协议仍然是http,但注入的onclick事件会在用户点击链接时触发XSS。<a href="http://" onclick="alert(document.domain)" x="">跳转链接</a> - 目标页面存在DOM型XSS场景
如果你构造的http链接的查询参数、hash片段部分,是目标站点会主动读取,且未经转义直接插入DOM、或传入eval/setTimeout等可执行代码的方法中,点击该链接跳转后就会触发目标站的XSS。
举个例子,目标站example.com存在如下前端逻辑:
你就可以构造链接为// 读取hash内容直接插入页面 document.querySelector('.content').innerHTML = decodeURIComponent(location.hash.slice(1))http://example.com#<img src=x onerror=alert(1)>,用户点击这个a标签跳转后就会触发XSS。
内容的提问来源于stack exchange,提问作者someguy
相关产品推荐
相关产品推荐

