写在前面
根据自己的学习和工作经验总结下常见漏洞类型和经常会遇到的问题。
一、注入攻击
注入攻击的本质,是把用户输入的数据当作代码执行。
1、SQL注入
漏洞原理&&场景&&危害
web应用程序对用户的输入未进行合法性判断或者过滤不严,导致服务器可以拼接执行恶意的SQL语句。
涉及到操作数据库的功能,如搜索产品、查询用户、排序
可导致:
- 机密数据被窃取。
- 核心业务数据被篡改。
- 网页被篡改。
- 数据库所在服务器被攻击变为傀儡主机,甚至企业网被入侵。
修复建议
-
(最推荐)操作数据库时,应使用预处理/预编译,避免使用SQL拼接。
mybatis:
1)使用#
符
2)无法使用#
符的场景(排序),使用白名单
jdbc:
1)SQL中使用?
占位符
2)使用PreparedStatement -
语义分析过滤SQL注入
-
白名单过滤,只允许使用的SQL语句通过
-
黑名单过滤,过滤详细规则见:mysql注入黑名单过滤、oracle注入黑名单过滤
-
前端加密,将请求使用js加密,并做好js混淆。增加解密难度,至少能防住扫描器