javascript - JS这样做居然可以跨域请求远程资源,请问原理是什么!?
伊谢尔伦
伊谢尔伦 2017-04-10 15:03:09
[JavaScript讨论组]

演示地址:http://runjs.cn/code/vmjaz1pj

如果说这样就可以跨域请求资源了,那岂不是想要攻击谁就攻击谁?这样太不安全了。

代码如下:

document.write("
            
            
            
            
            
            
            
            
            
            
            
            

            
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
伊谢尔伦

其实不用写那么多代码,原理很简单就是将页面以 script 标签的形式加载进来,例如 <script src="http://segmentfault.com"></script>。由于 script 标签是没有跨域限制的所以可以加载进来。(废话,JSONP 不就是这个原理么!)但是当 JS引擎 开始解析的时候就会出现各种报错,因为本来就是 text/html 而不是 text/javascript 啊。这样做的话能做的攻击仅限于 DDOS 了吧,不过话说回来 DDOS 为何需要如此蛋疼的去做...=_=! 至于 https 的话由于现代浏览器做了限制,非 https 域下加载的话也是会被拒绝的,当然这和跨域没太大的关系就是了。

巴扎黑

和github ddos攻击的方式很像,前提是有一个人劫持了网关进行了中间人攻击(如GFW) 解决方案是使用https的方式对内容进行加密,防止中间人更改你的报文内容

ringa_lee

想想你是不是很多代码是引用的第三方的CDN的,比如说百度CDN http://openapi.baidu.com/wiki/index.php?title=docs/cplat/libs 又拍云CDN http://jscdn.upai.com/
这样,你的代码中引用的js代码就是跟你的域名不一样的。这在浏览器中是允许的。浏览器会拦截跨域的xmlhttp对象的请求,但是不会拦截这种script标签的请求。

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

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