Web安全 | 青训营笔记

53 阅读2分钟

攻击

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">

CSRF防御

token