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