SQL注入
下面这个视频讲的不错,今天听舍友提起这个概念,有点兴趣,可以用来水一篇博客,咳咳。
想复现一下sql注入的场景,但是问了问AI,想在项目中用JPA或者Mybatis-plus都采用参数化查询,并且在程序中有前端后端多重防线,SQL注入不太可能。
看来这个SQL注入也是个之前的东西了,现在都防着他呢。
但是这怎么能难倒我呢,我找了个大二写的项目,采用servlet,mysql,html,Tomcat完成。在登录时,并没有其他特殊的拦截。下面复现一下两个经典场景:

// ========== 安全版本(使用预编译语句,防止SQL注入) ==========
// @Select("select * from employee where username = #{username} and password = #{password}")
// Employee getEmployee(@Param("username") String username, @Param("password") String password);
// ========== 易受SQL注入攻击的版本(用于安全测试学习) ==========
@Select("select * from employee where username = '${username}' and password = '${password}'")
Employee getEmployee(@Param("username") String username, @Param("password") String password);
这里采用的是
用户名: admin' -- 密码: 任意密码 注意用户名这是'+空格+--+空格

这里采用的是
用户名: admin' OR '1'='1 密码: 任意密码

登录成功后的页面:

浙公网安备 33010602011771号