Web 开发的安全之旅|青训营笔记

124 阅读2分钟

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

Web 开发的安全之旅:从攻击、防御两个视角,简要介绍前端范畴内常见的安全问题,包括 XSS、CSRF、SQL 注入、DOS 等。

hacker--攻击

跨站脚本攻击(XSS)

xss主要利用了开发者盲目信任用户提交的信息,前端工程师直接把用户提交的字符串转化成DOM树

image.png

image.png

按性质划分

  • 存储型:恶意脚本被存在数据库中,用户访问页面就会被攻击,危害极大,对全部用户可见。
  • 反射型:不涉及数据库,从URL上攻击。恶意脚本在服务端注入

跨站伪造请求(CSRF)

在用户不知情的情况下,利用用户权限(cookie),构造指定HTTP请求,窃取或者修改用户敏感信息。

SQL-Injection

过程:SQL参数在请求上代入(恶意注入),然后请求到达服务器端,服务器读取这段SQL语句,然后运行代码, 代码被执行后,攻击者能够获取其他数据,或者修改删除数据。

服务端伪造请求(SSRF)

与Injection原理相同。

DoS

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。

正则表达式——贪婪模式

  • “?”:满足一个
  • “no?”:满足尽量多

基于正则表达式的DoS

回溯

DDoS

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新情求。 攻击特点:

  • 直接访问IP
  • 任意API
  • 消耗大量宽带

开发者--防御

XSS

  • 永远不信任用户的提交内容
  • 不要将用户提交内容直接转换成DOM

前端

  • 主流框架默认防御XSS
  • goole-closure-library

服务端(Node)

  • DOMPurify

Content Security Policy(CSP)

  • 哪些域名是安全的
  • 来自安全源的脚本可以直接执行,否则直接抛错
  • 对eval+inline script说×

image.png

image.png

image.png