随着网络越来越多的深入到人们生活的各个方面,网络安全问题也变得越来越重要。本人做为一个小程序员,对安全问题也是谈虎色变,现将本人总结的一点关于SQL防注入的方法发布出来,希望大家批评指导。
关于SQL注入的原理本人不在赘述,相信大家的认识都比我要深刻。我只把防注入的几种方法的纲领列一列。
1、客户端对用户的输入进行合法性验证。对可以确定数据类型的输入要严格判断内容是否是相关类型、长度是否正常、是否有非法字符。对于不能确定类型的输入要判断长度并检查非法字符。如不能限定长度,也要检查是否有非法字符。总之原则就是把能确定的都要验证。如果发现不合法的输入则终止数据提交并进行友好提示。
2、服务器端检查。攻击者可以绕过客户端检查而直接提交非法数据,所以一定要有服务器端验证。验证原理和前端基本一样。如果发现非法数据基本能断定是蓄意攻击,要终止程序运行并提出警告。
3、尽量少的使用SQL拼接语句来操作数据库,尽量用存储过程来完成。并且所有的输入值要进行参数化处理,不能把输入值直接嵌入的SQL语句中或直接做为参数传给存储过程。这样既可以提高数据库的访问速度又可以提高安全性。
4、严格限制数据库连接用户的权限。在能确保完成需要操做的前提下把权限降到最低。
5、不要把具体的网站错误信息返回到前台,给出统一的错误提示。