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

132 阅读2分钟

image.png

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

XSS攻击

造成原因——直接提交恶意脚本

分类

存储型的XSS攻击

反射型的XSS攻击

  • 不涉及数据库
  • 从url上攻击

基于dom的XSS攻击

  • 不需要服务器的参与
  • 恶意攻击的发起+执行,全在浏览器完成

前两个的区别在于:完成注入脚本的地方

前者在服务端进行注入

基于mutation的XSS攻击

  • 利用浏览器渲染DOM的特性(独特优化)
  • 不同浏览器,会有区别(按浏览器进行攻击)

XSS防御

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

前端

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

服务端 Node

  • DOMPurify (npm包)

如果用户需求是动态生成DOM

  • 对string进行转义
  • 对svg文件进行扫描
  • 避免用户自定义跳转链接
  • 避免用户自定义样式

注:

  1. 同源策略——协议 域名 端口号通通相等

  2. CSP内容安全策略

csrf 跨站伪造请求 攻击

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

CSRF的防御

origin+referer

token

-->iframe攻击

-->解决方式

设置响应头部,两个可选值

另外避免偷懒行为

防御CSRF策略 SameSite Cookie属性

避免用户信息被携带 从根源上解决

区别于CORS 跨站资源共享

injection注入攻击

SQL injection

其他

  • CLI
  • OS command
  • SSRF 服务器端伪造请求,严格而言,只是原理类似于injection

注入防御

SQL

其他

DoS 服务拒绝 攻击

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

注:

正则表达式——贪婪模式

const greedyRegExp=/a+/;  //有多少匹配多少  贪婪模式
const nonGreedyRegExp=/a+?/; //有一个就行
const str="aaaaaa";
console.log(str.match(greedyRegExp)[0]);  //"aaaaaa"
console.log(str.match(nonGreedyRegExp)[0]);  //"a"

基于正则表达式的DoS——利用贪婪模式

DDoS

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

进攻特点

  • 直接访问IP
  • 任意API (不区分接口)
  • 消耗大量带宽(耗尽)
  • 典型:洪水攻击

Dos 防御

基于正则表达式的Dos 防御

DDoS

基于传输层的攻击方式

中间人攻击方式

发生条件

  • 明文传输
  • 信息篡改不可知
  • 对方身份未验证

对于传输层 防御

SRI

总结