生而为人

程序员的自我修养

0%

常见安全漏洞及解决方案

sql注入漏洞

修复方案:
如果拼接参数是SQL的查询参数都可以通过将mybatis配置文件中的 $ 改为 #,来解决
替换规则如下:
1.将 WHERE some_field = ‘${变量}’ 替换为 WHERE some_field = #{param}

2.将 like ‘%${变量}%’ 替换为 like concat(‘%’, #{变量}, ‘%’)

3.将 like concat(‘%’, ${变量}, ‘%’) 替换成 like concat(‘%’, #{变量}, ‘%’)

4.将 WHERE some_field IN (${变量}) 替换为

WHERE some_field IN

#{item}

对于拼接的变量不是SQL参数的,而是字段名、表名的情况,可以使用安全SDK检查输入是否是合法的标识符。
1.pom 引入安全SDK依赖

com.sankuai.security
sec-sdk
${尽可能最新版本}

\2. 代码中检查输入的变量的值是否是合法的标识符。
String sortName = req.getParameter(“sortName”);
if (sortName != null && !SecSdk.isValidSqlIdentifier(sortName)) {
// 危险,可能有SQL注入,
// return or throw exception
}

参考文档:
SQL注入介绍:https://sectraining.sankuai.com/?source=source-scanner/#/document/30001
安全SDK文档:https://km.sankuai.com/page/234776924

CORS 安全配置不当

XSS 跨站脚本攻击

越权类安全问题