SQL注入最简单也是最常见的例子就是用户登陆这一模块,如果用户对SQL有一定的了解,同时系统并没有做防止SQL注入处理,用户可以在输入的时候加上’两个冒号作为特殊字符,这样的话会让计算机认为他输入的是SQL语句的关键字从而改变你的SQL语句,造成不可估量的损失。 
在JDBC中通常会使用PreparedStatement来代替Statement来处理sql语句,如

            String sql = "select * from t_user where password = ?";
pt = conn.prepareStatement(sql);
pt.setString(1, num);
rs = pt.executeQuery();

使用PreparedStatement的好处是数据库会对sql语句进行预编译,下次执行相同的sql语句时,数据库端不会再进行预编译了,而直接用数据库的缓冲区,提高数据访问的效率,如果sql语句只执行一次,以后不再复用。 
SQL注入 攻 击 只 对 Statement有效, 对 PreparedStatement 是无效的; 
PreparedStatement可以在传入sql后,执行语句前,给参数赋值,避免了因普通的拼接sql字符串语句所带来的安全问题,而且准备sql和执行sql是在两个语句里面完成的,也提高了语句执行的效率 比如单引号会给你加一个转义,加个斜杠。上面的sql语句在数据库里执行就是这样

select * from t_user where password='ddd\' or \'1\'=\'1';

它会把恶意的注入语句预处理为参数

最新文章

  1. sublime text 3 配置php开发环境
  2. 网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
  3. okhttp封装
  4. node c#
  5. Java Web 高性能开发,第 3 部分: 网站优化实战
  6. CoolBlog开发笔记第5课:请求与响应
  7. [Swift]LeetCode39. 组合总和 | Combination Sum
  8. ELFHash算法解释
  9. ECharts教程
  10. Maven中阿里云私服配置
  11. vagrant的centos镜像,怎么用root用户登录?
  12. Newtonsoft.Json 的基本用法
  13. (原创)C# 压缩解压那些事儿
  14. win10安装virtualBox创建CentOS6.5虚拟机
  15. 牛客网-《剑指offer》-二进制中1的个数
  16. Quartz Trigger Priority 触发器优先级
  17. webpack流程图
  18. 【问题】解决在微信公众号里面网站无法访问:oops something went wrong:(
  19. C# 日志记录工具类--LogHelper.cs测试
  20. nmcli命令使用

热门文章

  1. Mybatis传多个参数(三种解决方案)
  2. tomcat
  3. IUS database
  4. centos安装mono
  5. [Ubuntu] change mouse scrolling between standard and natural
  6. iOS当中一些常见的面试题
  7. 在ASP.NET MVC5应用程序中快速接入QQ和新浪微博OAuth
  8. java异常处理预习
  9. Java图形化用户界面(GUI)笔记(一)介绍
  10. JSON总结