吐槽一下12306的SQL注入漏洞

 最近看到有人竟然去测试了一下12306的数据库进行SQL注入,好邪恶地注入成功,并且通过异常栈追踪到了数据库的架构:

架构:SSH2

服务器:WebLogic

数据库:Oracle

连接池:C3P0

     说起数据库,不得不说起安全性,说起安全性不得不说起SQL注入,说起SQL注入必须说一下Statement与PreparedStatement区别。后者安全性更好,并且在编程的时候写起来更方便,可以批量处理(通过使用占位符号?及setXxx()来实现),预编译也提高了SQL语句执行效率。

     下面用实例来说一下SQL注入:

------------------------------------(1)---------------------------------------------------

Connection con = DriverManager.getConnection(url,username,password);

String sql = "select * from e_shan where username ='" + username + "' and password ='" + password + "'";

Statement stmt = con.CreateStatement();

stmt.execute(sql);

...

------------------------------------(2)---------------------------------------------------

Connection con = DriverManager.getConnection(url,username,password);

String sql = "select * from e_shan where username =? and password =?";

PreparedStatement pstmt = con.prepareStatement(sql);

pstmt.setString(1,username);

pstmt.setString(2,password);

pstmt.execute(sql);

...

上面(1)与(2)看上去正常执行起来没有问题,但是如果稍的经验的类人猿都会毫不犹豫地选择第二种,在第一种最常见的SQL注入是在username传入参数时将其值赋值为"' or true or '",那么无论登陆密码是什么,该SQL语句都是返回true,成功SQL注入,当进入到你系统之后,一切都像~~~~总之各种悲催吧,像这种基础中的基础,12306竟然犯了,不知道这3亿花在什么地方了吐槽一下12306的SQL注入漏洞

   好吧,吐槽完了。


转载于:https://my.oschina.net/lanzp/blog/188340

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值