安全

文章目录
  1. 1. XSS
    1. 1.1. 应对
      1. 1.1.1. CSP
  2. 2. CSRF
    1. 2.1. 应对
  3. 3. 点击挟持
    1. 3.1. 应对
  4. 4. SQL注入
  5. 5. 反爬虫
  6. 6. HTTP劫持
  7. 7. SYN flood
  8. 8. DNS劫持和劫持
  9. 9. ARP攻击

XSS

cross site script 跨站脚本攻击 【参考资料

  • 存储型:往评论、文章等注入,然后返回给前端
  • 插入型:往url上插入script等代码
  • document.referer:利用js里用到这个变量
<!-- 文章注入 -->
<img onerror="alert(1)" />

<!-- 评论注入 -->
<script>alert(1)</script>

应对

  • 后端保存和读取前都过滤一下
  • 前端展示前用xss库过滤一下
  • 谨慎用eval
  • CSP

CSP

指定某些资源只能够从某些域名加载,否则上报警告【参考资料
Content-Security-Policy

  • default-src: 未配置的取这个值
  • img-src
  • script-src
  • media-src
  • report-uri 上报警告的url

CSRF

Cross-site request forgery 跨站请求伪造 【参考资料

  • 引导用户访问该链接 https://xxx.com/delete/1
  • 引导用户访问包含该代码的页面 <img src="https://xxx.com/delete/1" />
  • 用隐藏form表单跨域POST

应对

点击挟持

使用图片或按钮重叠在opacity的iframe某些元素上,引导用户去点击真实iframe上的按钮【参考资料

应对

  • X-OPTIONS-FRAME: SAMEORIGIN

SQL注入

  • 使用sequelize等ORM类库
  • 使用query函数的查询参数占位符
    connection.query('select * where name = ?', [name], () => {
    // xxx
    })

反爬虫

  • 要求登录
  • 限制ip
  • user-agent
  • 验证码

HTTP劫持

HTTP的风险:窃听、篡改、冒充;可以升级到HTTPS来防御;

SYN flood

TCP连接的第一个包,非常小的一种数据包。SYN 攻击包括大量此类的包,由于这些包看上去来自实际不存在的站点,因此无法有效进行处理。每个机器的欺骗包都要花几秒钟进行尝试方可放弃提供正常响应。【参考资料

  • 服务器减少等待时间
  • 服务器取消重复发送确认请求
  • Serverless laas
  • failban: 禁用ip

DNS劫持和劫持

参考资料
DNS Sec: 加密DNS解析请求

ARP攻击

参考资料

  • 动态ARP检测:记录MAC和IP的绑定
  • ARP防火墙