漏洞

  • content {:toc}

服务端漏洞

安全事件

  • 数据泄漏
  • 服务瘫痪
  • 成果失窃
  • 系统劫持

SQL注入

SQL语句静态模板和动态数据部分没有严格区分,如果在数据项中加入了某些SOL语句关键字(比如说SELECT、DROP等等),这些SQL语句就很可以在数据库写入或读取数据时得到执行.

防护方式:

  • 1.尽量不要基于DB的Raw方法拼接构造SQL语句,而应该使用预编译、ORM框架
  • 2.使用ORM框架时,应该注意框架中的特性,可能存在不安全的写法导致的SQL注入问题.
  • 3.在复杂场景一定要使用拼接SQL,需要对外部输入进行转义.

命令执行

代码中遇到需要调用某个命令才能完成的功能时候, 会涉及到命令拼接, 如果命令拼接没有做好安全过滤, 那么将会导致命令注入风险, 服务器权限将会被控制

防护方式:

  • 1.对动态的值尽可能设置白名单进行验证.
  • 2.如果某些位置无法白名单,需要尝试对数据类型进行校验.
  • 3.特殊字符黑名单的过滤,或者转义.

越权漏洞

  • 未授权
  • 水平越权
  • 垂直越权

SSRF

SSRF又称服务端请求伪造攻击,指攻击者利用后端服务器为跳板,让后端服务向非预期网络地址(主要指内网地址)发出恶意请求,获取敏感信息或执行恶意操作.

实例: 设置头像, 输入一个网址

文件上传漏洞

防护方案:

  • 1.限制文件类型:如果系统只需要图片类型, 可以从服务端解析文件格式, 限制只能传入特定的文件格式.
  • 2.站库分离:应用部署的位置和上传的文件分离, 一般可以使用TOS、OSS等进行文件存储.
  • 3.防止图床:对图片访问链接进行限制,包括时间限制, 访问身份限制等.

客户端漏洞

开放重定向

开放重定向: 某些需要重定向到其他站点的功能, 往往在参数中携带需要重定向的URL, 但实际程序逻辑没有控制好重定向的范围, 导致攻击者可以构造恶意链接, 诱导用户重定向到恶意站点.

危害:钓鱼攻击. 修复方案:对重定向严格进行白名单控制并正确校验匹配白名单.

XSS

防护方法:

  • 1.输入过滤:对输入的特殊字符进行拦截,禁止前端提交特殊字符
  • 2.输出过滤: a.当字符输出到Dom时候,对危险字符进行html encode,避免XSS. b.使用vue/react等框架时候,避免使用危险指令,而应该使用安全指令.v-html/v-text
  • 3.富文本场景:比如文章发布场景,本身是需要提供富文本功能,这时候需要严格限制tag和attribute,可以在代码层面做白名单或者黑名单.
  • 4.CSP:用于缓解XSS,理念是对当前站点允许加载什么源的资源、发送什么请求能进行限制.

CSRF

跨站请求伪造(CSRF): 允许攻击者诱导用户访问恶意链接,执行用户非预期执行的操作. 危害: 用户执行敏感操作,如关注其他用户,或者更改账号的安全邮箱等.

防护方式: 防护的核心是判断请求的来源

  • CSRF tokens: 首次访问时候给客户端传递一个token, 客户端每次访问时候都必须带上此 token 才能访问.
  • SameSite cookies: Strick -> Lax(Default) -> None.核心是禁止某些场景发送第三方cookie.
  • Referer-based validation:校验 Referer来源是否是合法站点. 思考:大厂微服务场景,CSRF防护应该怎么做?
Licensed under CC BY-NC-SA 4.0
最后更新于 Oct 13, 2024 18:49 +0800
使用 Hugo 构建
主题 StackJimmy 设计