window.error “Script error”问题跟进
来源:互联网 发布:淘宝买不了q币了 编辑:程序博客网 时间:2024/05/19 12:16
http://www.webryan.net/2012/12/something-about-window-onerror-script-error/
话题背景:
为了提高web开发质量,我们通常会在web前端页面里注册window.onerror事件,然后将统一的脚本错误信息发送到服务器汇总和统计,每天计算出错误排行榜,以方便我们跟踪和解决问题。
window.onerror = function(msg,url,line,row){
$.badjs(msg,url,line,row,上报ID); //创建图片请求,并加上一些前台需要搜集的信息
}
但是最近统计发现有大量的Script error信息,排 行第一且没有给出具体的错误内容。
出现“Script error”的场景和条件:
1、通过window.onerror注册监听脚本错误事件
2、浏览器:Firefox、Chrome、Safari、Opera等浏览器历史版本
3、页面内使用了script标签引入,非同域的JS或者HTML;且出现脚本错误。
Eg: http://zc.qq.com/index.html 里 <script src=”http://1.url.cn/b/js/10001/simple.js“></script>
出现“Script error”的原因(只列举webkit;ff同理):
不难看出,在出发脚本错误提示的时候,通过secureityOrigin()里的方法判断了是否是同源可用。不是的话,就生成massage为“Script error”,错误行号为0的信息。
浏览器限制同源脚本错误背景分析:
本质上是出于安全考虑。因为script引入文件内容的时候是忽略文件本身的MIME声明,且是允许跨域请求的。这里如果不屏蔽掉跨域情况下的错误信息,很可能会给黑客提供一个攻击通道。
比如:
1、qq.com有个页面pay.html(在有登录态的情况下)会有两种显示内容:“您当前的余额为0元”或“您当前的余额为100元”
2、hacker.com/index.html页面里通过script引入了这个http://qq.com/pay.html的话
那么黑客就可以在hacker.com上获取到错误:“Uncaught ReferenceError: 你的余额为100 is not defined|http://hacker.com/index.html|1”。此时黑客已经间接的获取到了他想要的信息,那么黑客可以通过遍历等方式将信息最大化。
应对办法:
目前Firefox 13+,Chrome 2012.12.9号之后版本均已经支持:通过设置同源策略来显示错误信息。
a、设置 script 标签的 crossorigin
Eg: <script src=”http://somremotesite.example/script.js” crossorigin></script>
b、设置javascript文件的HTTP头
Access-Control-Allow-Origin: http://qq.com
对于使用CEF(Chromium Embedded Framework)的项目可以直接更新代码或手动修改代码:
Source/WebCore/dom/ScriptExecutionContext.cpp ,301-309,
301
if (securityOrigin()->canRequest(targetUrl)) {302
message = errorMessage;303
line = lineNumber;304
sourceName = sourceURL;305
} else {306
message = ”Script error.”;307
sourceName = String();308
line = 0;309
}310
301
message = errorMessage;302
line = lineNumber;303
sourceName = sourceURL;- window.error “Script error”问题跟进
- Internet Explorer Script Error
- Script Error getScript
- Script error.全面解析
- shell script中的syntax error near unexpected token `then' 问题
- 屏蔽webbrowser的script error
- VS2008 Pop Up Script Error
- axWebBrowser script error 脚本错误
- Error: run custom shell script
- Script error .可能的原因
- Error Creating Window Handle
- #error 问题
- 问题 error
- DS Run Script task gives "Error 1 during script execution"
- Shell script - Binary Operator Expected error in Shell Script
- Linux: Unary Operator Expected (Bash Script Error)
- script: [Errno 8] Exec format error
- linux下shell script运行时类似【Syntax error: "(" unexpected】报错问题
- 温习快速排序
- Javascript高级程序设计第二版第六章--面向对象程序设计(Object-Oriented Programming)简称OOP编程--笔记
- Xmanager连接Linux远程桌面(后面添加了自己的部分) ---没成功,
- C/C++ Linux 程序员必须了解的 10 个工具
- MySQL DBA以及其他对MySQL性能优化
- window.error “Script error”问题跟进
- Android4.0中AppWidget的一些新玩意体验
- MFC
- 手机屏幕关于VGA、QVGA、WVGA、HVGA的区别介绍
- SQL Server索引中的碎片和填充因子
- lea和offset的区别
- XenoCode 使用方法
- Java编程的动态性,第5部分: 动态转换类
- JAVA的StringBuffer类