如何判断手机浏览器是否有安全隐患?
浏览器的安全其实是一个非常复杂的问题,它在很大程度上是由浏览器本身的定位决定的。举个例子,一个本来几乎拥有所有系统访问权限的APP,却要从鱼目混杂的互联网洋汪中去下载一个不知道谁写的页面+脚本,然后在本地运行,而为了安全起见,还要保证执行的脚本自动屏蔽掉那些不该看的、不该拿的东西。而且,拜device API (设备接口)所赐,网页脚本如需访问诸如摄像头、麦克风等很多敏感就需要相应的浏览器支持,于是浏览器也需要访问相应的device API 。
浏览器自身设计
事实上,第一批浏览器, 比如 Internet Explorer, Opera, Firefox (Netscape), 在最初的设计的时候,都没有能预见到互联网会以如此爆发性的速度发展, 同时也受制于硬件条件的限制, 无一例外的采用单块结构(monolithic architecture)。所谓的单块结构,就是浏览器的每个模块,都塞在一起,而没有明确的隔离。 这种做法代码执行高效,写起来也很方便,不过现在看起来, 如果从安全的角度来讲,则是很有问题的。
要知道浏览器里面有非常多的模块, 有一些模块专门处理从网络上下载下来的内容, 比如文档解析器, 文档布局器,或者是Javascript的执行。 又有一些只和本地系统接口, 比如文件访问,密码的存储, 剪贴板一类的。 如果全都放在一起, 那简直就是给网上下载下来的恶意脚本开了一扇便利之门。 一个更好的架构是把这两组模块分别隔开。然后把第一组专门处理网络下载内容的模块用沙箱一类的技术装起来。
现代的浏览器, 比如谷歌的Chromium, 或者使用Chromium框架的浏览器(如桌面端猎豹和360), Opera 桌面(版本12以后) 以及Opera mobile 一类的, 都是采用的这种结构,基本上可以把很多潜在的安全风险扼杀在摇篮之中。 (想了解详情的同学可以参考这里 )
在这种比较干净的架构出来之前,各家浏览器基本上都是修修补补, 或者直接就是拿产品特性说事儿,比如Firefox说明自己比较安全的原因基本上是 : 我的独立(没有和操作系统集成), 也不像IE一样往死里做(不支持Active X 插件一类的奇葩东西) 具体可参见这里
而Opera 在Presto 时代, 则在内部的代码规范里面明确规定任何情况下不能是用栈上缓存,从而杜绝当年极其流行的栈上缓存溢出攻击。
上面说谈的其实讲的都是浏览器如何面对网站上面的恶意代码保证自己不被黑掉。浏览器还有一块非常大的安全区域是在于数据传输。比如大家都不希望自己的银行密码被除了网上银行之外的其他人看到。
其中 HTTP 与其说是不安全,不如说是令人发指的不安全。因为 HTTP 不仅仅是明文传输,而且是用文本来传输的,就是说,传输的报文,直接人就可以读得懂。
比如:Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
这个是在HTTP里面发送给服务器用户名+密码的报文( 来自于wikipedia ) 。
基本就是明晃晃的告诉别人,你看, 我的密码在这里哦,然后拿base64编了一下码,就发将在广袤的互联网上了。注意哦, 这个是编码不是加密,没有任何安全性可言的。
HTTPS 会好非常多, HTTPS 的数据是加密传输,加密的强度也不小,很多银行都在使用,对于一般的攻击是免疫,。
当然 BOSS 级别的 NSA 不在此列, 因为HTTPS 虽然理论上不能破解,但是NSA丧心病狂的在HTTPS用的硬件随机发生器中植入了后门。 (详情参见这里)
有一些浏览器。 比如 Opera Mini 或者带有 Opera turbo 技术的浏览器 提供端到端的私有加密。这一类的浏览器在安全性方面会有加分。
PS: 关于国内浏览器采集用户隐私数据问题(IMEI, IMSI)等。
当然地理位置数据采集就更普遍了,浏览器采集这个,其实很大程度上是为了支持html5 中的Geolocation 组件,Chrome 也会采集。
如何判断手机浏览器是否有安全隐患?相关推荐
- js判断手机浏览器屏幕方向
/* js判断手机浏览器屏幕方向*/var direction = {__getOrientation: function () {if (window.orientation == 0 || win ...
- 判断手机浏览器终端设备
判断手机浏览器终端设备 var browser = {versions: function () {var u = navigator.userAgent, app = navigator.appVe ...
- 判断手机浏览器还是微信浏览器(PHP)
//判断是否 微信浏览器 function isWeixin1() {if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== fal ...
- 判断手机浏览器还是桌面浏览器
目录 (1)使用navigator.userAgent (2)使用window.matchMedia() (3)使用react-device-detect (1)使用navigator.userAge ...
- linux下浏览器如何登录微信,js判断手机浏览器操作系统和微信浏览器的方法
今天就为大家介绍一下用js判断手机客户端平台及系统平台的方法: //手机端判断各个平台浏览器及操作系统平台 function checkPlatform(){ if(/android/i.test(n ...
- JS判断手机浏览器是横屏or竖屏
移动端的浏览器一般都支持window.orientation这个参数,通过这个参数可以判断出手机是处在横屏还是竖屏状态. 从而根据实际需求而执行相应的程序. 通过添加监听事件onorientation ...
- 手机浏览器类型ua php,通过userAgent判断手机浏览器类型(示例代码)
我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...
- html判断手机浏览器,JS判断浏览器iOS(iPhone)、Android手机移动端
通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端.网上搜索来的,比较简单: var u = navigator.userAgent; var isAndroid ...
- php通过agent判断app,通过userAgent判断手机浏览器类型 – 好饱的博客 – 程序员博客...
我们可以通过userAgent来判断,比如检测某些关键字,例如:AppleWebKit*****Mobile或AppleWebKit,需要注意的是有些浏览器的userAgent中并不包含AppleWe ...
最新文章
- 使用K.function()调试keras
- JAVA .xml 配置和 .properties 配置
- Linux中yum和apt-get
- Mysql (二)Mysql 数据库表增删改查
- 方法级别权限控制-基本介绍与JSR250注解使用
- 由于芯片短缺 现代汽车牙山工厂将再度停产
- 月份对比_行业洞察 | 10月份行业概览amp;头部广告主盘点
- 物流知识分享——浅析库存日结作业
- Mozilla推荐的CSS属性书写顺序及命名规则
- 用户研究:用户行为分析
- springboot配置logback
- 【Arduino学习】01.开发板选择和环境的搭建
- Android 圆形 ImageView
- 长安居大不易--用大数据分析西安租房现状
- 针对华为产品,如何在小红书宣传中发布有关图文笔记并达到最佳效果?
- 咕咚已上传服务器怎到不丁微信,微信运动怎样使用咕咚数据?
- AndroidStudio上传自己的项目到Bintray jCenter远程仓库(解决400错误)
- Arxiv | 预测新型蛋白质间相互作用的图神经网络模型
- php 实现店铺装修6
- 数学和计算机联系论文,数学与计算机论文
热门文章
- 高通量测序的方式:单端测序、paired-end/mate-paired(PE/MP)测序 解释
- 2020 CES“高尖精”机器人回顾!
- 引才!博士60万、硕士35万、本科28万,沿海城市
- OpenGL ES之GLSL实现多种“马赛克滤镜”效果
- PHP实现带有验证码的登陆注册
- 拓扑排序 POJ - 3687反向图跑字典序(重边)
- 历数国内外知名制作人~~制作人发展趋势
- 如何运用3Dmax制作游戏武器模型
- SAP 上传图片至系统
- 纳瓦尔宝典 健康、爱和使命,以此为序,其他的都不重要 不把自己太当回事