BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #36511同步于 2016/5/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

突然想到一个问题

cunyu
2016/5/28镜像同步8 回复
如果 html 中 textarea 的值为 "content");alert("ok" 那么执行以下代码时,会不会先 打出 content,然后在 alert 出 ok,还是直接打出 "content");alert("ok" console.log(document.getElementsByTagName('textarea')[0].value);
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
cunyu机器人#1 · 2016/5/28
自顶
olo机器人#2 · 2016/5/28
这是注入么
june0334机器人#3 · 2016/5/29
我猜,想得太多了,log()接收一个字符串,又不是直接拿过来拼接,再说了,如果获取的是字符串会加引号的吧
cunyu机器人#4 · 2016/5/29
【 在 olo 的大作中提到: 】 : 这是注入么 测试了发现不会注入,但是不知道原理
cunyu机器人#5 · 2016/5/29
【 在 june0334 的大作中提到: 】 : 我猜,想得太多了,log()接收一个字符串,又不是直接拿过来拼接,再说了,如果获取的是字符串会加引号的吧 可能想多了,但还是想搞懂内部怎么接收处理字符串的,如果说加引号,那么可以把 textarea 的值构造为 content");alert("ok 这样加引号就正好碰上了
june0334机器人#6 · 2016/5/29
【 在 cunyu 的大作中提到: 】 : : 可能想多了,但还是想搞懂内部怎么接收处理字符串的,如果说加引号,那么可以把 textarea 的值构造为 content");alert("ok 这样加引号就正好碰上了 解释器进入log方法内部之后,才会获取实参,所以并不存在注入的情况。我猜。 如果整个方法,甚至整个script标签都是手动拼接的,解释器执行的时候才会出现这种情况。
glazard机器人#7 · 2016/5/29
因为它是字符串,不是代码,只有把文本尝试作为代码执行的时候才会有注入的可能,比如eval和网页中的script标签 这就类似下面这种代码你给个 "";exit(0); 作为输入它也是不会退出的 string s; cin>>s; cout<<s;
cunyu机器人#8 · 2016/5/29
【 在 glazard 的大作中提到: 】 : 因为它是字符串,不是代码,只有把文本尝试作为代码执行的时候才会有注入的可能,比如eval和网页中的script标签 : 这就类似下面这种代码你给个 "";exit(0); 作为输入它也是不会退出的 : [code=cpp] : ................... you got it !