网站常见安全漏洞1| 青训营

45 阅读2分钟

一个网站的构成:前端、后端、网关、交互

漏洞: 数据泄露、服务瘫痪、成果失窃、系统劫持

第三方组件漏洞

防护方式:针对jave可以选择dependency-check-maven检查项目以来的组件是否存在安全漏洞。可以通过更新版本来避免漏洞。

SQL注入: SQL语句静态模板和动态模板部分没有严格区分,如果在数据项中加入某些SQL语句关键字,比如说SELECT、DROP,这些SQL语句就很可能在数据本写入或读取数据时得到执行。攻击者可能通过SQL的注入实现另外的功能,可以实现任意登录的效果。

原因:1错误的语言框架,使用Mybatis=plus的危险函数等,2.使用$构建SQL模板,3.golanng错误写法。

防护方法:

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

命令执行:

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

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

越权漏洞:

资源访问或操作时候主题权限没有进行校验就会造成越权问题,细分为:未授权(不需要认证),水平越权(访问别人的密码信息),垂直越权(没有做好权限隔离,低权限用户对高权限数据进行访问)。

水平越权:设计资源id尽量不要用短id(遍历难度小)。 垂直越权:如果是简单的场景,可以将接口在路由级别进行分组,对不同的API分组引入Middleware进行权限拦截,获取当前用户角色以确定室友可以访问此接口。