Web安全之旅 | 青训营笔记
这是我参与「第四届青训营 」笔记创作活动的的第7天
一 安全性攻击
1.XSS ( Cross Site Scripting)
原理
指攻击者在服务端返回的 HTML 中嵌入 javascript 脚本,然后开发者盲目相信用户提交的内容,将内容直接转化为DOM。
反射性
请求时注入URL中,解析后返回浏览器,浏览器执行
存储型
存储在服务端,用户访问或请求时服务器时,就会莫名执行嵌入的恶意脚本
基于DOM的XSS
DOM—based XSS漏洞是基于文档对象模型Document Object Model,DOM)的一种漏洞,将恶意脚本注入在页面中,态地检查和修改页面内容,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞
2.CRSF (Cross-site request forgery)
概念
通俗理解就是基于用户登录信息,执行用户非本意操作的一种攻击方式,即在用户不知情的情况下利用用户信息构造了HTTP请求
流程:
- 用户访问网站1后,将信息保存在cookie中;
- 网站2诱导用户访问其网站,用户访问后网站2拿到了用户信息;
- 网站2利用cookie发起跨站请求,借用户信息攻击网站1 攻击根源 CSRF 漏洞的根源在于信任 cookie
3.注入
- 通过SQL注入,构建sql语句更改数据库
- SSRF服务端请求伪造
- 中间人攻击
二、安全策略
同源策略SOP:通过一个源的资源不被另一个源读取的限制,保证资源的安全性,防止了恶意攻击
1.XSS防范
- 服务端、浏览器端请求头设置:httponly 、Content-Security-Policy 、 set-cookie 、 secure
- 用户提交的内容用字符串保存
- vue等主流框架都有解决
- CSP内容安全策略,定义安全的源/域名
- 校正不对的dom标签,移除script、iframe等节点
2.CRSF防范
限制请求来源:头部Origin包含有协议、域名和端口,可以通过该字段进行校验
限制头部:Access-Control-Allow-Origin: *
token防御:每次请求都携带token,通过token进行校验。最重要的一点是CSRF token是不能保存在cookie中,保存在cookie中就像是自投罗网😂
3.注入防范
- 使用代码审查
- 强制使用参数化语句,在运行时将拒绝嵌入用户输入中的SQL语句
实际应用中,需要不同源资源之间的共享或者交互,怎么实现呢?解决跨域的方法:(链接中有介绍) juejin.cn/post/695342…