Web开发的安全之旅(防御篇)| 青训营笔记

50 阅读2分钟

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

安全问题非常常见,会造成严重的危害,主要危害对象有用户、公司、程序员(离职),因此重视Web开发的安全工作很有必要。接下来就从攻击者和防御者两个角度谈一下Web安全。

二、防御篇

1.针对XSS攻击

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

image.png

防御XSS——现成工具

前端
  • 主流框架默认防御XSS,

  • 例如react、Vue

    Google-closure-library

服务端(Node)
  • DOMPurify 但是,用户需求必须动态生成DOM 例如: 1.string ---> DOM

image.png

注:我们需要对string进行转义

2.上传svg

image.png

注:对svg文件进行扫描,因为按照规范svg之中可以插入script标签,即svg文件被加载,script标签被执行,既完成了一次XSS攻击。

3.自定义跳转链接 尽量不要做让用户自定义跳转链接 否则做好过滤,因为允许自定义链接跳转可以传递JS代码。 例如: image.png

4.自定义样式

image.png

补充:Same-origin Policy——同源策略

  • 协议
  • 域名
  • 端口

例如:该图中三个地址都不是同源策略

image.png

地址1、2协议不同 地址2、3域名不同

一般而言,对于HTTP请求,同源请求都是没有问题的,但若是跨域即不同源,往往不可行,即需要看请求类型和服务器的设置。

Content Security Policy(CSP)——内容安全策略

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

服务器的响应头部 image.png

浏览器 meta image.png

2.CSRF的防御

image.png

CSRF——token 先有页面,后有请求

image.png

image.png

用户绑定:攻击者也可以是注册用户===可以过去自己的token 过期时间:前向保密

CSRF——iframe攻击

image.png

CSRF anti-pattern GET != GET +POST

image.png

避免用户信息被携带:SameSite Cookie

image.png

image.png 限制的是: Cookie domain 页面域名

SameSite 与CORS区别:

image.png

正确防御CSRF

  • 找到项目中查询SQL的地方
  • 使用prepared statement

image.png

Injection beyond SQL

image.png

3.防御DoS

1.Regex DoS

image.png

2.Logical DoS

image.png

3.DDoS

image.png