之前看到的一道java面试题,Statement与PreparedStatement的区别,什么是SQL注入,如何防止SQL注入

前面部分比较好回答

1、PreparedStatement支持动态设置参数,Statement不支持。
2、PreparedStatement可避免如类似单引号的编码麻烦。
3、PreparedStatement支持预编译,Statement不支持。
4、在sql语句出错时PreparedStatement不易检查,而Statement则更便于查错。
(如果有不完善欢迎补充)
 
而什么是sql注入?
sql注入是攻击者通过sql注入漏洞绕过应用程序安全措施,检索整个sql数据库内容,甚至进行插入删除修改操作。简而言之,就是攻击者用拼接sql语句可以直接对sql进行增删改查。
比如select * from table where name = "+appName+",利用appName参数值的输入,来生成恶意的sql语句,如将['or'1'='1'] 传入可在数据库中执行。
sql注入攻击类型有很多。主要有带内注入,带外注入,盲注入。
 
如何防止sql注入?
1.尽量少使用或者不使用动态sql,这样可以减少用户提供的sql直接放入语句。
2.对数据库一些敏感内容进行加密存储,比如密码,电话等。
3.限制数据库权限。
4.不要直接向用户显示数据库错误,因为攻击者可以通过错误信息获取一定的有用信息。
5.对访问数据库的Web应用程序使用Web应用程序防火墙(WAF),这个比较直接,防火墙通过设置,进行判断,如果是sql注入,直接给你拦外边了,不会继续提交请求。
6.更新数据库,减少漏洞
 
 

最新文章

  1. 自定义控件之圆形的image
  2. 单例模式(Java)
  3. windows10, 安装wamp无法启动服务的问题
  4. git介绍
  5. GENERATED_UCLASS_BODY 和 GENERATED_BODY 区别
  6. 代码大全 MSIL语言程序设计
  7. 七、TCP/IP协议
  8. Python-Day9 Paramiko模块/进程/线程/RabbitMQ队列
  9. 【二分】Codeforces 706B Interesting drink
  10. oracle之replace结合substr的使用
  11. 精确覆盖DLX算法模板
  12. ADS-B显示终端5.9
  13. Python 变量作用域,闭包和装饰器
  14. nnet3配置中的上下文和chunk(块)大小
  15. Spring的AOP开发的相关术语
  16. vue图表
  17. Alpha(4/10)
  18. 在Spring中配置SQL server 2000
  19. Atitit.播放系统规划新版本 and 最近版本回顾 v3  pbf.doc  1 版本11 (ing)41.1 规划h5本地缓存系列 41.2 Android版本app41.3 双类别系统,
  20. AngularJS自定义Directive初体验

热门文章

  1. 菜鸟教程-python中的包
  2. java获取近几天的日期
  3. Hive设置配置参数的方法,列举8个常用配置
  4. Spring04——Spring MVC 全解析
  5. SecureCRT的主题配置
  6. 震惊!程序员的福音!不需要敲代码就能完成复杂的逻辑应用? —— Azure Logic App
  7. poj - 2096 概率dp (找bug)
  8. iOS 内存分配与分区
  9. html vue简单
  10. 三、【Docker笔记】Docker镜像