javascript - xss 脚本攻击问题
PHPz
PHPz 2017-04-11 11:50:08
[JavaScript讨论组]

如下php代码



为什么会有两种不同情况?chrome 55版本

http://localhost/test/?name=//失败
http://localhost/test/?name=//成功
PHPz
PHPz

学习是最好的投资!

全部回复(5)
迷茫

你好,这个问题主要是chrome自带的xss过滤器导致的

目前很多浏览器都会自身对用户的输入进行判断,检测是否存在攻击字符,比如你上述提到的<script>标签,这段脚本很明显就是一段xss攻击向量,因此浏览器会对这段输入进行处理,不同的浏览器处理方式也不一样。

但为了不影响用户体验,过滤器一般也只会对一些基础的xss攻击语句进行处理,所以题主下面的语句很可能过滤器并未检测和处理,因此造成了上述情况。

不好意思,之前没仔细看代码,题主是通过innerHTML将文本插入,这样的方式确实不会执行,我上述的回答仅适用于直接输出时造成的执行差异。

怪我咯

$name = htmlspecialchars ($_GET["name"],ENT_QUOTES );
print.innerText= text.value;

PHP中文网

print.innerHTML 这个 innerHTML 是解析html标签的 innerText 是不解析 html标签的.这个是典型的demoxss

PHPz

问题在于innerHTML插入script不执行,参考:
id.innerHTML中插入<script src"sds.js"></script>
让innerHTML的js脚本运行起来 总结

黄舟

可以使用document.write()让js执行

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号