防止sql注入的方法
时间:2015-06-19 阅读:次 QQ群:182913345
观察近些年来一些安全事件及其后果,安全专家们已经得到一个结论,好多威胁都是通过sql注入造成的,下面就为大家分享防止sql注入的方法。
1、设置目录权限
系统管理员应为信息系统的每个目录或文件设置相应的权限,授予每个文件能正常运行的最低权限。对于图片、静态页面文件所在的目录,应只授予“读取”权限;对于包含活动脚本的文件,一般情况下授予“纯脚本”权限就足够了;对于需要执行的CGI程序,才授予“执行”权限;对于通过系统后台管理中心上传的文件存放的目录或Access数据库文件,则只授予“读取”和“写入”权限,执行权限要设为“无”,这样即使上传了木马程序也运行不了。
2、隐藏错误信息
在用户输入非法数据的情况下,网站返回应用服务器的错误提示信息,这样界面不仅不够友好,更为严重的是泄露了服务器甚至是数据库的信息,这样攻击者轻易地就能获取信息系统后台的数据库类型以及连接数据的用户等信息。所以很多入侵就是根据错误提示信息来完成的。把服务器设置成不管出什么样的错误,只给出一种错误提示信息,那就没有办法入侵了。
3、数据库连接用户
在通过活动脚本与数据库建立连接时,一定要通过专用的数据库用户,而不要使用SA,SYS或SYSTEM等高权限用户。因为SA是个等同于操作系统Adminstrator权限的角色,拿到了sa权限,就可以通过调用xp-cmdshell命令得到系统的最高权限。如果把sa权限给了存在sql注入漏洞的库,那其他库也就不安全了。另外,通过sa用户,还可以复制cmd.Exe文件创建UNICODE漏洞,实现对整个计算机的控制。
4、数据库用户权限
建立了连接数据库的用户,还要严格控制用户的权限。对sql server而言,如果PUBLIC权限足够使用就不给在高的权限,甚至对各个表的操作权限。否则,攻击者就可以执行备份数据库的操作,进一步获取数据库中的全部信息。同时还可以调用相应的SQL语句,对数据表或表中数据进行操作。
5、敏感信息加密
攻击者一旦注入了数据库,就将获取数据库中的所有信息,包括密码等敏感信息。而很多用户为了记忆方便,多个系统都采用相同的密码,包括个人邮箱、MSN、甚至银行账号,这将产生巨大的安全隐患。因此需要对敏感信息进行加密。例如采用md5加密算法,由于该加密算法不可逆,即使攻击者获取了加密后的数据,也不能获得有效信息。
对SQL注入漏洞的防范,以致对信息系统安全的防护,是一项细致、艰巨有长期的任务。系统设计人员,程序开发员,系统管理员都应该提高安全意识,除了以上列出的几点防护措施外,还要注意不要用轻易就能猜出的表名、字段名来设计系统;开发程序时不要用数据表中的字段名称来命名表单元素;系统运行过程中要随时关注系统运行状态,经常检查系统中是否有可疑用户,并定期分析信息系统运行日志。一旦发现漏洞,尽早修补,保证信息系统与数据的安全。
下一篇:电脑突然自动关机了怎么办?