攻击
Cross-Site Script(XSS跨站脚本攻击)
方式:
开发者盲目信任用户所提交的任何内容,不加过滤的将用户提交的内容转换为DOM内容返回前端;当用户访问含有恶意脚本的安全页面时,恶意脚本将会被执行,造成用户隐私泄露,用户机器被利用等等;
Cross-site request forgery(CSRF跨站伪造请求)
方式:
利用用户的cookie权限,伪造跨站的HTTP请求,窃取修改用户的信息;
Injection注入攻击
SQL Injection:
通过前端请求的参数作为SQL语句的参数,达到获取其他数据,修改删除数据的效果;
Denial of Service(DsS)
通过构造特定的请求,导致服务器资源被消耗,响应不了其他请求,导致请求挤压,引发雪崩效应;
Distributed Dos(DDos)
短时间内,服务器收到大量僵尸设备的请求流量,不能及时完成全部请求,导致请求堆积,进而引发雪崩效应,无法响应用户请求;
中间人攻击
明文传输、信息篡改不可知、对方身份未验证等导致信息被窃取,请求被修改等等;
防御
- 避免将用户提交的内容直接转换成DOM;
- 有动态生成DOM的需求
- 对字符串进行转义方式生成
- 防止上传SVG时脚本的注入
- 防止用户自定义跳转
- 防止用户自定义样式
同源策略
**同源:**协议、域名、端口号都相同;
Content Security Policy(CSP内容安全策略)
定义安全的源域名,只执行来自安全源的脚本
例子:
服务器的响应头部设置:
Content-Security-Policy: script-src 'self' => 只允许同源的脚本
Content-Security-Policy: script-src 'self' https://example.com => 允许同源的脚本和https://example.com 的脚本
浏览器的meta设置:
<meta http-equiv="Content=Security=Policy" content="script-src self">