d16|青训营

26 阅读2分钟

一个网站的基本构成: 前端、网关、后端、前后端交互 常见安全事件:数据泄露、服务瘫痪、成果失窃、系统劫持 漏洞分类:服务端与客户端

服务端漏洞: 第三方组件漏洞 防护方式:针对java可以选择使用dependency-check-maven检查项目以来的组件是否存在安全漏洞

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

错误用法: 1.[Java]错误使用语言框架,或者语言框架本身存在安全问题 使用Mybatis-plus 的危险函数,比如inSal,支持直接SOL拼接,存在SOL注入风险 2、[java]Mybatis使用[]构建SQL模板使用[]构建SQL模板 使用[],实际的SQL语句:SELECT id.name,pwd,age FROM t_user_info WHERE id=? 此时不存在漏洞 防护方式: 1.尽量不要基于DB的Raw方法拼接构造SOL语句,而应该使用预编译、ORM框架 2.使用ORM框架时,应该注意框架中的特性,可能存在不安全的写法导致的SOL注入问题 3、在复杂场景一定要使用拼接SOL,需要对外部输入进行转义。

命令执行 代码中遇到需要调用某个命令才能完成的功能时候,会涉及到命令拼接,如果命令拼接没有做好安全过滤,那么将会导致命令注入风险,服务器权限将会被控制 防护方式 1.对动态的值尽可能设置白名单进行验证 2、如果某些位置无法白名单,需要尝试对数据类型进行校验 3、特殊字符黑名单的过滤,或者转义

越权漏洞 水平越权:防护方式: 涉及资源id尽量不要使用短id (遍历难度较小) ,同时最重要的一定要最好资源属主校验

垂直越权:防护方式: 如果是简单的场景,可以将接口在路由级别进行分组,对不同的API分组引入Middleware进行权限拦截,Middleware获取当前用户角色以确定是否可以访问此接口