Web安全之旅

142 阅读2分钟

Web安全之旅 | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第7天

一 安全性攻击

1.XSS ( Cross Site Scripting)

原理
指攻击者在服务端返回的 HTML 中嵌入 javascript 脚本,然后开发者盲目相信用户提交的内容,将内容直接转化为DOM。
反射性
请求时注入URL中,解析后返回浏览器,浏览器执行 存储型
存储在服务端,用户访问或请求时服务器时,就会莫名执行嵌入的恶意脚本 基于DOM的XSS DOM—based XSS漏洞是基于文档对象模型Document Object ModelDOM)的一种漏洞,将恶意脚本注入在页面中,态地检查和修改页面内容,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞

2.CRSF (Cross-site request forgery)

概念
通俗理解就是基于用户登录信息,执行用户非本意操作的一种攻击方式,即在用户不知情的情况下利用用户信息构造了HTTP请求

流程:

  1. 用户访问网站1后,将信息保存在cookie中;
  2. 网站2诱导用户访问其网站,用户访问后网站2拿到了用户信息;
  3. 网站2利用cookie发起跨站请求,借用户信息攻击网站1 攻击根源 CSRF 漏洞的根源在于信任 cookie

3.注入

  1. 通过SQL注入,构建sql语句更改数据库
  2. SSRF服务端请求伪造
  3. 中间人攻击

二、安全策略

同源策略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.注入防范

  1. 使用代码审查
  2. 强制使用参数化语句,在运行时将拒绝嵌入用户输入中的SQL语句

实际应用中,需要不同源资源之间的共享或者交互,怎么实现呢?解决跨域的方法:(链接中有介绍) juejin.cn/post/695342…