判断以及防止SQL注入

Posted 绿色的草

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断以及防止SQL注入相关的知识,希望对你有一定的参考价值。

SQL注入是目前黑客最常用的攻击手段,它的原理是利用数据库对特殊标识符的解析强行从页面向后台传入。改变SQL语句结构,达到扩展权限、创建高等级用户、强行修改用户资料等等操作。 
那怎么判断是否被SQL注入了呢? 
通过SQL注入的原理我们知道,判断SQL注入可以通过页面传入的数据,后台不应该相信从后台传入的任何数据特别是特殊整型参数和特殊字符参数! 
防止SQL注入其实也很简单 
1.检查变量数据类型和格式 
只要是固定格式的变量,在SQL语句执行前,应该严格按照固定格式检查,确保变量是我们预想的格式! 
2.过滤特殊符号 
对于无法确定固定格式的变量,一定要进行特殊符号过来或转移处理,一面之星SQL时有歧义。 
当我们上传图片的时候

enctype=\”multipart/form-data\”
enctype=”multipart/form-data”
  • 1
  • 2
  • 1
  • 2

没有“/“,表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,进行下面的操作. 
3.绑定变量,使用预编译语句 
实际上,绑定变量使用预编译语句是预防SQL注入的最佳方法,使用预编译的SQL语句语义不会发生改变。在SQL语句中,变量用问号?表示,黑客即使本事再大,也无法改变SQL语句的格式,从根本上杜绝了SQL注入攻击的发生。 
4.数据库信息加密安全 
有时候数据库信息泄露了,我们应该对数据库的密码等信息进行加密(MD5等),这样信息泄露,损失也可以在控制在一定范围内。

使用JSP的时候要注意 
1.不要随意开一生产环境汇总Webserver的错误显示。 
2.永远不要相信来自用户端的变量输入,有固定格式的变量一定要严格检查对应的格式,没有固定格式的变量需要对引号等特殊字符进行必要的过滤转义。 
3.使用预编译绑定变量的SQL语句 
4.做好数据库账号权限管理 
5.严格加密处理用户机密信息

一个好的程序一定要注意安全性,否则只适合练手。


















以上是关于判断以及防止SQL注入的主要内容,如果未能解决你的问题,请参考以下文章

如何判断是不是存在SQL注入以及注入类型?

php防止sql注入以及xss跨站脚本攻击

MyBatis如何防止SQL注入

MyBatis怎么防止SQL注入

MyBatis怎么防止SQL注入

防止sql注入:mybatis的#{}和${}的区别以及order by注入问题