如何使用SpringBoot写一个带sql注入的程序?

   本专栏旨在发现一个问题,解决一个问题,欢迎评论区提出一个问题,欢迎订阅,持续更新。

1:写一段代码

Mapper

@Mapper
public interface SqlIngMapper {

    @Select("select * from app_user where user_name = ${userName} ")
     List<Map<String,Object>> query(@Param("userName") String params);
}

Rest

@RestController
public class SqLinjectionRest {


    @Resource
    SqlIngMapper sqlIngMapper;

    @RequestMapping("sqlIngTest")
    public List<Map<String,Object>> sqlTest(@RequestParam String params){
        return sqlIngMapper.query(params);
    }
}

2: 测试程序注入

http://localhost:8080/sqlIngTest?params=1%20or%201%20=%201

访问URL:

04a4d72844de4897a33acd7a66b2da3d.png

程序sql执行为

select * from app_user where user_name = 1 or 1 = 1 

可以看出,这个sql的语句执行在我们的控制中。这种执行方式,把一些用户敏感信息暴露出来了。 黑客就是利用这种技术,成功登陆后台,最后通过拿到webshell + 提权 获取服务器权限。

关于密码的彩虹表解析,我们可以使用cmd5网站进行查询。

905de46fd97e4039bc4ac9a3efba37e4.png

md5在线解密破解,md5解密加密

3: 如何防范类似攻击?

代码千万行,安全第一行。

防御的方式很多

1: 增加sql注入的过滤器

2: ${xxx}改为#{} 

3: 不要使用List<Map<String,Object>> 接受sql返回结果

4: 避免使用简单的加密方式 ,如 md5 sha256 sha512 sha1 加盐 等。加盐也并不安全。

 

 

  

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot 是基于 Spring 框架构建的,它可以通过自动配置和约定大于配置的方式来轻松创建独立的、生产级别的 Spring 应用程序。然而,Spring Boot 也存在 SQL 注入的风险,因此我们需要掌握相应的防范措施。 SQL 注入漏洞是指黑客利用合法的 SQL 查询接口,向应用程序的后台数据库发送针对数据库的攻击字符串,获取数据库的机密信息或通过修改数据库来破坏系统的安全性。在 Spring Boot 中,SQL 注入漏洞通常出现在动态拼接 SQL 语句的场景中,如使用 JdbcTemplate 进行数据库操作或通过 MyBatis 操作数据库时,如果不做正确的防范,就很容易发生 SQL 注入漏洞。 为了避免 SQL 注入漏洞的问题,我们可以采取以下措施: 1. 使用预处理语句:建议使用预处理语句,这样可以将传入的参数当做参数来处理,而不是当做 SQL 语句的一部分来处理。预处理语句可以有效地解决 SQL 注入问题,也可以提高应用程序的性能。 2. 使用参数中转:使用参数中转可以将直接拼接 SQL 语句的方式改为将参数值插入到预定义的 SQL 语句当中,从而避免 SQL 注入漏洞的风险。 3. 遵循安全编码规范:在进行开发工作时,应该遵循安全编码规范,对输入参数进行合理的检查和过滤,确保不会将恶意的输入传递给后台 SQL 语句。 总而言之,为了防范 SQL 注入漏洞,我们需要采取多种措施,如使用预处理语句、使用参数中转和遵循安全编码规范等,以确保应用程序安全性。同时,开发人员也要不断学习新的安全技术和解决方案,提高系统的安全性和鲁棒性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清酒浊夜色

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值