攻击与预防

224 阅读2分钟

一、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>&lt;script&gt;alert("xss");&lt;/script&gt;
console.log(html)
以上示例使用了 js-xss 来实现,可以看到在输出中保留了 h1 标签且过滤了 script 标签。

CSP 本质上就是建立白名单,开发者明确告诉浏览器哪些外部资源可以加载和执行
通过两种方式来开启 CSP:

设置 HTTP Header 中的 Content-Security-Policy
设置 meta 标签的方式 <meta http-equiv="Content-Security-Policy">