1 网络劫持有哪几种?
网络劫持一般分为两种:
-
DNS劫持: (输入京东被强制跳转到淘宝这就属于dns劫持)
- DNS强制解析: 通过修改运营商的本地DNS记录,来引导用户流量到缓存服务器
- 302跳转的方式: 通过监控网络出口的流量,分析判断哪些内容是可以进行劫持处理的,再对劫持的内存发起302跳转的回复,引导用户获取内容
-
HTTP劫持: (访问谷歌但是一直有贪玩蓝月的广告),由于http明文传输,运营商会修改你的http响应内容(即加广告)
如何应对网络劫持?
DNS劫持由于涉嫌违法,已经被监管起来,现在很少会有DNS劫持,而http劫持依然非常盛行.
最有效的办法就是全站HTTPS,将HTTP加密,这使得运营商无法获取明文,就无法劫持你的响应内容.
2 HTTPS一定是安全的吗?
非全站HTTPS并不安全
以国内的工商银行为例
工商银行的首页不支持HTTPS
而工商银行的网银页面是支持HTTPS的
可能有人会问,登录页面支持HTTPS不就行了,首页又没有涉及账户信息.
其实这是非常不安全的行为,黑客会利用这一点进行攻击,一般是以下流程:
- 用户在首页点击「登录」,页面跳转到有https的网银页面,但此时由于首页是http请求,所以是明文的,这就会被黑客劫持
- 黑客劫持用户的跳转请求,将https网银页面地址转换为http的地址再发送给银行
用户 <== HTTP ==> 黑客 <== HTTPS ==> 银行 3. 此时如果用户输入账户信息,那么会被中间的黑客获取,此时的账号密码就被泄露了
好在是工商银行的网银页面应该是开启了hsts和pre load,只支持https,因此上述攻击暂时是无效的.
3 总结有哪些可能引起前端安全的的问题?
- 跨站脚本 (Cross-Site Scripting, XSS): 一种代码注入方式, 为了与 CSS 区分所以被称作 XSS. 早期常见于网络论坛, 起因是网站没有对用户的输入进行严格的限制, 使得攻击者可以将脚本上传到帖子让其他人浏览到有恶意脚本的页面, 其注入方式很简单包括但不限于 JavaScript / VBScript / CSS / Flash 等
- iframe的滥用: iframe中的内容是由第三方来提供的,默认情况下他们不受我们的控制,他们可以在iframe中运行JavaScirpt脚本、Flash插件、弹出对话框等等,这可能会破坏前端用户体验
- 跨站点请求伪造(Cross-Site Request Forgeries,CSRF): 指攻击者通过设置好的陷阱,强制对已完成认证的用户进行非预期的个人信息或设定信息等某些状态更新,属于被动攻击
- 恶意第三方库: 无论是后端服务器应用还是前端应用开发,绝大多数时候我们都是在借助开发框架和各种类库进行快速开发,一旦第三方库被植入恶意代码很容易引起安全问题,比如event-stream的恶意代码事件,2018年11月21日,名为 FallingSnow的用户在知名JavaScript应用库event-stream在github Issuse中发布了针对植入的恶意代码的疑问,表示event-stream中存在用于窃取用户数字钱包的恶意代码
关于另一篇安全问题:【前端安全】一、CSRF攻击和XSS攻击