这是我参与「第四届青训营 」笔记创作活动的的第八天
web安全初识
web安全大抵可以从两个角度看待。1. hacker ---- 攻击 2. 开发者 ----防御
攻击
XSS
Cross-Site Scripting(XSS)
在可以提交表单的地方,开发者盲目信任用户提交的内容就会导致这样的安全问题。没有顾虑地直接将用户的提交内容从String转换为DOM。用户的提交内容可能是DOM的伪代码,那么就可能导致用户信息泄露,绘制UI诱骗用户点击/填写表单
Stored XSS
这种攻击是危害最大的,对全部用户可见
恶意脚本被存于数据库中,访问页面即可触发而被攻击
Reflected XSS
不涉及数据库,从URL上攻击
从URL上提供参数时,给予的参数可以是恶意的
DOM-based XSS Demo
完全在浏览器上完成的攻击
这种攻击与Reflected XSS相反
Mutation-based XSS
利用了浏览器渲染 DOM 的特性(独特优化)。不同的浏览器会有区别(按浏览器进行攻击)
Cross-site request forgery(CSRF)
在用户不知情的前提下利用用户权限(cookie)构造指定HTTP请求,窃取或修改用户敏感信息
SQL Inject
在请求的时候恶意注入SQL参数,服务器将参数转为可运行的SQL代码,攻击者即可获取数据库中其他数据
Denial of Service(DoS)
通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应
典型的有基于正则表达式的DoS
Distributed DoS(DDoS)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求
中间人攻击
防御
XSS
永远不信任用户的提交内容。不要将用户的提交内容直接转换成DOM
可以使用一些工具
Content Security Policy(CSP)
CSRF -- token
传输层 --- 防御中间人
使用 HTTPS 协议
HTTPS 协议具有可靠性,完整性,不可抵赖性