一、Dos攻击
原理就是发送大量的合法请求到服务器,服务器无法分辨这些请求是正常请求还是攻击请求,所以都会照单全收。海量的请求会造成服务器停止工作或拒绝服务的状态。
二、跨站请求伪造(CSRF,Cross-Site Request Forgeries)
攻击者构造出一个后端请求地址,诱导用户点击或者通过某些途径自动发起请求。如果用户是在登录状态下的话,后端就以为是用户在操作,从而进行相应的逻辑。
防范 CSRF 攻击可以遵循以下几种规则:
Get 请求不对数据进行修改
不让第三方网站访问到用户 Cookie
阻止第三方网站请求接口
请求时附带验证信息,比如验证码或者 Token
三、SOL注入攻击
原理是通过在对SQL语句调用方式上的疏漏,恶意注入SQL语句
四、XSS攻击
跨站脚本攻击:将可以执行的代码注入到网页中。
持久型:也就是攻击的代码被服务端写入进数据库中,攻击危害性很大

非持久型:修改 URL 参数的方式加入攻击代码
<!-- http://www.domain.com?name=<script>alert(1)</script> -->
<div>{{name}}</div>
防御:
1转义字符
2、对于显示富文本来说,使用白名单
const xss = require('xss')
let html = xss('<h1 id="title">XSS Demo</h1><script>alert("xss");</script>')
// -> <h1>XSS Demo</h1><script>alert("xss");</script>
console.log(html)
以上示例使用了 js-xss 来实现,可以看到在输出中保留了 h1 标签且过滤了 script 标签。
CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行
通过两种方式来开启 CSP:
设置 HTTP Header 中的 Content-Security-Policy
设置 meta 标签的方式 <meta http-equiv="Content-Security-Policy">