项目中的常见漏洞以及防范手段

282 阅读2分钟

前言

前段时间项目漏洞频频被白帽子利用,所以老板们要求把所有服务代码都检查一遍,老板们很急,被要求连续加了几天班看了几万行代码,差点猝死在键盘前。针对常见漏洞进行了一些学习,来写点总结加强记忆。

1. 目录穿越

漏洞简介

通过使用 ../等绝对或者相对路径,跳出期望路径对文件进行越权读写操作,配置文件、源代码甚至整个服务器的文件都能被任意读写

防御策略

根本原因是使用了用户输入作为文件名进行读写操作

  1. 不要使用输入作为文件名
  2. 实在要用做好字符限制(纯字母或数字作为文件名)

2.上传漏洞

漏洞简介

上传PHP、ASP等可执行文件时,可以绕过web应用限制,读取到整个服务器的文件或者执行任意命令

防御策略
  1. 设置上传文件白名单
  2. 对文件类型进行校验
  3. 上传的文件转存到例如cos
  4. PHP 非常容易实现 一句话木马,使用PHP注意

3. SSRF-服务端请求伪造

漏洞简介

根本原因:服务端执行了用户传来的http请求,这些请求可以被埋藏在各种可能的地方,例如前端传来的头像url、svg描述符、m3u文件等

防御策略
  1. 对前端传入的url设置域名白名单
  2. 上传文件白名单过滤
  3. 服务端http请求设置域名白名单

4. CSRF-客户端请求伪造

漏洞简介

用户浏览器cookie被第三方劫持(只能使用,不能解析到内容)伪装用户发送http请求。也就是说需要用户被攻击

防御策略
  1. 校验是真·用户发起的请求,例如请求带上token服务端校验,token不能放在cookie
  2. 重要数据的写入要求输入验证码,GET不写入数据
  3. 双重cookie校验

5.XXS-跨站脚本攻击

漏洞简介

恶意代码被注入执行

  1. 反射型XSS:一次性执行代码,需要引导用户点击交互
  2. 持久型XSS:恶意代码被储了,下次渲染时执行代码
  3. DOM-Base型:利用.innerHTML、.outerHTML、document.write()操作dom
防御策略
  1. 对输入代码xss敏感过滤
  2. DOM 中的内联事件监听器,如 location、onclick、onerror、onload、onmouseover 等, 标签的href属性,JavaScript 的eval()、setTimeout()、setInterval()等,都能把字符串作为代码运行。注意检查是否有用户输入内容。

结尾