网站地图    收藏   

主页 > 前端 > javascript >

JavaScript不能读取script标签src文件内容

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 本文章来给各位同学介绍JavaScript不能读取script标签src文件内容解决办法,各位同学可参考。...


通常我们页面中创建script标签时要么src引入外部js文件:


?




1



<script type="text/javascript" src="jquery-1.9.1.min.js"></script>







要么直接在标签内写内容:


?




1
2
3



<script type="text">
这里是script标签里的内容
</script>







script标签有一个属性type,默认值:text/javascript,例如你直接声明一个script标签,如果不声明type标签就默认为js文档。


?




1
2
3
4
5
6
7
8
9
10



<script>
    var a = 50;
  
</script>
  
<script type="text/javascript">
  
    alert(a); // 50
  
</script>







当然,你也可以指定它就是纯文本:


?




1
2
3
4
5
6
7



<script type="text">
    var a = 50;
</script>
  
<script type="text/javascript">
    alert(a); // 提示没有定义
</script>








因为第一个script标签type类型为text,浏览器自然就不会把标签里的内容当做js文档处理,也就不会声明a变量。
当然,如果的script标签type=text的时候,标签里无论写什么内容都不会报js语法错误:


?




1
2
3



<script>
这里是script标签内容,没有指定type=text,默认浏览器当做js文档来处理于是会报语法错误
</script>








声明为type=text类型,报错消失:


?




1
2
3



<script type="text">
这里是script标签内容,没有指定type=text,默认浏览器当做js文档来处理于是会报语法错误
</script>







 


script理论上也是一个标签,既然是标签那我们就可以获取它的DOM节点:

即使是你声明的script标签type=text/javascript 类型,也能获取获取:


?




1
2
3
4
5
6
7



<script type="text/javascript">
// 这里是单行注释
/**
 * 这里是多行注释
 */
var name = "lizhong";
</script>









以上,我们都可以通过dom节点获取script的内容,但无法获取src指定文件的内容。比如:


?




1
2
3
4
5
6
7



<script type="text/javascript" src="a.js">
// 这里是单行注释
/**
 * 这里是多行注释
 */
var name = "lizhong";
</script>







a.js文件内容:


?




1



var dec = "这里是a.js文件内容";







执行:

我们发现居然还是打印页面上声明script时往里写的内容,即使我像正常情况声明script标签:


?




1



<script type="text/javascript" src="a.js"></script>







或者使用type=text类型:


?




1



<script type="text" src="a.js"></script>







结果还是获取不到a.js的内容:

然而有趣的是,FireFox的FireBug工具显示script标签里的内容就是src指定的文件内容:

但你通过dom节点的innerHTML属性依然读到的内容只是在页面标签里实际写入的内容。
这就引发了一个问题:
假如要是能动态读取script标签src指向路径文件的内容,那么就会非常的不安全。这样,我就会轻易的获取到所有登录我站点用户电脑中的所有文件(至少文本文件的内容)。
如我生成这么一个标签,假定是window平台用户访问我站点,并且拥有D磁盘路径:


?




1



<script type="text" src="file:///D:/"></script>







它能把我D盘下所有文件目录都能获取到:

然后获取这个script节点内容,经过字符串正则处理读到一大堆文件名,得到文件名后就容易获取文件的内容了。

可惜,大多浏览器都堵住了这个漏洞,别做梦了!

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论