如何防止SQL注入
2017-11-09 16:43
162 查看
SQL注入攻击的危害这么大,那么该如何来防治呢?下面这些建议或许对防治SQL注入有一定的帮助。
严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害。
检查输入的数据是否具有所期望的数据格式,严格限制变量的类型,例如使用regexp包进行一些匹配处理,或者使用strconv包对字符串转化成其他基本类型的数据进行判断。
对进入数据库的特殊字符('"\尖括号&*;等)进行转义处理,或编码转换
所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。例如使用
在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。
使用PreparedStatement来代替Statement来执行SQL语句
严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害。
检查输入的数据是否具有所期望的数据格式,严格限制变量的类型,例如使用regexp包进行一些匹配处理,或者使用strconv包对字符串转化成其他基本类型的数据进行判断。
对进入数据库的特殊字符('"\尖括号&*;等)进行转义处理,或编码转换
所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。例如使用
database/sql里面的查询函数
Prepare和
Query,或者
Exec(query string, args ...interface{})。
在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。
避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。
使用PreparedStatement来代替Statement来执行SQL语句
相关文章推荐
- mybatis是如何防止SQL注入的
- SQL注入专题--整理帖 && like 语句拼sql 如何防止注入攻击。
- 如何防止sql注入
- Python中如何防止sql注入
- mybatis #和$区别、如何防止SQL注入
- Mybatis如何防止sql注入
- 如何防止sql注入
- java web sql注入测试(4)--如何防止该类缺陷发生
- 什么是sql注入,如何来防止sql注入
- PreparedStatement 如何防止SQL注入
- 从别人的一个“如何防止SQL注入“的帖子联想出来的一个有趣的解决方案”
- pdo如何防止 sql注入
- mybatis中#{}与${}的差别(如何防止sql注入)
- 如何防止sql注入
- PreparedStatement是如何防止SQL注入的?
- 如何测试WEB应用程序防止SQL注入***
- mybatis如何防止sql注入
- SQL注入漏洞产生的原因 ? 如何防止?
- 如何防止sql注入
- java如何防止sql注入