这是我参与「第四届青训营 」笔记创作活动的的第8天。关于web的安全防护开发。
两个角度看web安全
1.假如你是一个hacker————攻击者
2.假如你是一个开发者————防御
一.攻击篇
- SQL injection注入
Web应用未对用户提交的数据做过滤或者转义,导致后端数据库服务器执行了黑客提交的sql语句。黑客利用sql注入攻击可进行拖库、植入webshell,进而入侵服务器
- XSS跨站攻击
Web应用未对用户提交的数据做过滤或者转义,导致黑客提交的javascript代码被浏览器执行。黑客利用xss跨站攻击,可以构造恶意蠕虫、劫持网站cookie、获取键盘记录、植入恶意挖矿js代码
- CRSF攻击
CSRF (Cross-site request forgery),中文是跨站伪造请求。
Web应用对某些请求未对来源做验证,导致登录用户的浏览器执行黑客伪造的HTTP请求,并且应用程序认为是受害者发起的合法请求的请求。黑客利用CSRF攻击可以执行一些越权操作如添加后台管理员、删除文章等。
- SSRF
SSRF(Server-Side Request Forgery:服务器端请求伪造)
- 请求用户自定义的回调接口 callback
- web server 有内网权限
- DoS攻击
DoS为Denial of Service的简称有以下常见攻击方式:
- ReDos: 基于正则表达式的Dos攻击
- L-DoS (Logical DoS) 通常以循环执行逻辑、执行SQL登录、数据库写入、文件备份等大量耗时的同步操作。
- DDoS (Distributed DoS):短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应请求。
二.防御篇
- XSS防御
永远不信任用户的提交内容,不要将用户内容直接转为DOM,应该用string字符串存储。
-
前端主流框架默认防御XSS -
Google-closure-library
- 服务端(Node)
-
DOMPurify
Contenr Security Policy(CSP)
- 哪些源(域名)被认为是安全的。
- 来自安全源的脚步可以执行,否则直接报错。
CSRF 的防御
- CSRF--token
-
先有页面后有请求
-
防范DOS攻击
-
Regex DoS
- 代码扫描 + 正则性能测试
- 减少提供给用户的使用正则
-
L-Dos
- 限流:限制流量的异常流动。
- 分析代码的性能瓶颈:同步调用 、串行逻辑。
-
传输层--防御中间人
心得体会
经过这节课我了解了一些常见的web攻击方式,以及一些简单的防御措施,认识到做好一个网页安全是非常重要的,