这是我参与「第五届青训营 」伴学笔记创作活动的第13天
导言
在bing上搜索数据泄露相关信息,可以得到将近一千万条结果,在这些结果中显示出数据泄露极大地威胁了用户和公司的安全,说明安全问题十分常见且危害严重是开发人员在开发过程中必须考虑到的问题。
接下来将从两个角度看待Web开发安全问题
- 从hacker的角度:攻击者
- 从开发者的角度:防御者
攻击角度
Cross-Site Scripting(XSS)
是通过注入脚本语言的方式进行攻击
利用了网站盲目相信用户提交的内容,让用户提交的伪装成字符串的<script>...</script>的脚本语言变成了DOM中的一部分,从而进行document.write等操作。
特点
- 通常难以从UI上感知(暗地里执行脚本)
- 能够窃取用户信息,比如,cookie,token等
- 能够绘制UI(例如弹窗),诱骗用户点击填写相关信息等
XSS一般分成以下几种类型:Stored XSS,Reflected XSS,DOM-based XSS,Mutation-based XSS
Stored XSS:
- 恶意脚本存在于数据库中
- 访问页面就会被读取数据相当于被攻击
- 危害最大,对全部用户可见
Reflected XSS:
- 从不干涉数据库
- 从URL上攻击
DOM-based XSS:
- 不需要服务器的参与
- 恶意攻击的发起和执行,全在浏览器完成
Mutation-based XSS:
- 利用了浏览器渲染DOM的特性(浏览器的独特优化)
- 不同浏览器,具体攻击方式会有区别(按浏览器进行攻击)
- 需要对浏览器的渲染DOM方式十分了解
Cross-site request forgery(CSRF):
- 在用户不知情的前提下
- 利用用户权限(cookie等)
- 构造请求HTTP请求,窃取或修改用户敏感信息