常见的服务端漏洞 | 青训营

59 阅读1分钟

一个网站的基本构成

前端:JavaScript/vue/react;
网关:nginx;
后端:Go/Java/node;
前后端交互:HTTP/WebSocket
常见的安全事件:数据泄露、服务瘫痪、成果失窃、系统劫持

一、第三方组件漏洞

防护方式

针对JAVA可以使用dependency-check-maven检查项目以来的组件是否存在安全漏洞。

二、SQL注入

定义

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

可能导致问题的操作

1.JAVA:错误使用语言框架,或语言框架本身存在安全问题。
2.JAVA:Mybatis使用[$]构建SQL模板。
3.Golang常见错误写法

防护方式

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

三、命令控制

定义

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

防护方式

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