这是我参与「第五届青训营 」笔记创作活动的第2天
一、本堂课重点内容:
Web安全开发,首先介绍了常见的几种攻击方式,然后对这些攻击方式如何进行防御也进行了一对一的介绍。
二、详细知识点介绍:
1.XSS
攻击:
XSS主要利用盲目信任用户提交内容这个点来进行攻击,例如:如果服务器对用户提交的数据不做处理就转成DOM,攻击者就可以利用这个提交一些恶意脚本、恶意链接、恶意广告、假弹框、假输入框的代码,然后暗地里执行脚本窃取用户信息,诱骗用户输入信息。
防御:
对用户提交的数据不直接转DOM,而是转字符串。例如:前端主流框架的默认防御XSS,服务器(node)的DOMPurify。
2.CSRF
攻击:
CSRF主要通过网络请求窃取用户信息,例如:在用户不知情的情况下获取了用户的权限(cookie),然后利用用户权限构造指定的HTTP请求,窃取或修改用户信息。
防御:
通过对请求头部信息进行判断,判断来源是否为异常来源、限制请求来源从而限制异常请求、通过Origin和Referer属性来判断请求是否是合法来源、或者通过token。
3.Injection
攻击:
Injection主要是通过注入恶意指令或者代码进行攻击,例如:SOL Injection就是通过请求发送恶意SQL参数到服务器,服务器执行SQL参数,然后运行SQL指令,从而获取其他数据,或是修改/删除数据。
防御:
通过最小权限原则,限制对数据库的修改权限;建立允许名单加过滤;对URL类型参数进行协议、域名、IP等限制。
4.DoS
攻击:
DoS是通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。 例如:通过正则表达式不断的回溯匹配某个数据或者其他资源。
防御:
通过代码扫描+正则性能测试。
5.DDOS
攻击:
DDoS是通过短时间内,发送大量来自僵尸设备的流量请求,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无反应响应新请求。 例如:不断发送请求不做回复,从而建立大量请求连接,导致服务器带宽耗尽。
防御:
流量治理:负载均衡、API网关、CDN
快速自动扩容、非核心服务降级。
6.中间人攻击
攻击:
一个恶意浏览器在服务器和浏览器中间,然后对他们传递的数据进行窃取,修改或者返回恶意代码。
防御:
通过加密、MAC验证、数字签名。
三、课后个人总结:
通过对本次课程的学习让我对Web安全开发有了初步的认识,对于常见的攻击手段有了一定的了解,对攻击的防御有了初步的掌握,相信通过对本章的学习,能让我们能够更加重视Web开发安全,以后写代码也有一定的代码防御措施。
四、引用参考:
掘金-字节内部课程-前端入门理论篇-Web开发安全-攻击篇
掘金-字节内部课程-前端入门理论篇-Web开发安全-防御篇