解析阻止或减轻SQL注入攻击实用招数(2) |
| 发布时间: 2012/7/7 15:42:17 |
|
如何才能防止SQL注入攻击呢?
要做到防微杜渐,最重要的是清理数据和验证数据,这两项工作不能出现懈怠。清理数据是指通过函数运行任何递交的数据(如MySQL的mysql_real_escape_string()函数),以确保任何有威胁的字符,如“’”, 不会以数据方式输入到SQL查询。 验证则有所不同。验证是确保数据以被许可的方式递交。在最基础的操作中,验证包括确保电子邮件地址包含@符号,当验证只接受整数的时候,就只能提供数字,而且数据长度不能超过最大限度。验证通常以两种方式执行:一是列出危险字符或不受欢迎字符的黑名单;二是列出给定字符的名单,后者需要编程人员花费更多心思。虽然可以在客户端验证数据,但是黑客同样能够对数据进行修改,因此用户有必要在服务器端验证所有数据。 但是清理数据和验证数据还远远不能保障用户数据的安全。下面为大家介绍十种方法,帮助大家防止或减缓SQL注入攻击: 1. 不信任任何人:假设所有用户递交的数据全部危险,对所有数据都进行验证。 2. 没必要的话,就不要使用动态SQL:包括使用过的预备陈述,参数化的查询或保存好的进程。 3. 更新和补丁:通常程序和数据库中都存在黑客可以通过SQL注入而利用的漏洞,因此非常有必要使用程序补丁和更新。 4. 防火墙:无论是基于软件还是基于设备,都可考虑使用Web应用防火墙(WAF)来过滤恶意数据。好的防火墙具备一套完整的默认规则,而且很容易随时添加新规则。一个WAF可以在新漏洞的相应补丁推出前,为用户提供有效的安全保护。 5. 减少攻击界面:及时对数据库的功能进行处理,以免被黑客利用。例如,xp_cmdshell扩展了MS SQL中保存的进程,而这使得Windows命令窗口激增,并且还通过了一个用于执行的字符串,这些无疑都对黑客有益。被xp_cmdshell激增的Windows进程有着和SQL Server服务帐户相同的优先安全权限。 6. 使用合适的权限:使用管理员级别权限的时候不要连接你的数据库,除非迫不得已。使用有限的帐户权限有利于数据安全,而且这样也能限制黑客的权限。 7. 保密隐私:假设你的应用不安全,而且会随加密操作或哈希密码以及其他机密数据,包括连接字符串,作出相应调整。 8. 不要泄露过多信息:黑客可以从出错信息中读取大量有关数据库架构的信息,因此要确保这些出错信息中尽可能显示比较少的信息。使用RemoteOnly CustomErrors模式在本地电脑上显示冗长的错误信息,如此外部黑客的不良操作就只能收到无法操作的出错信息。 9. 不要忘记根本原则:经常更改应用帐户的密码。虽然这是常识,但是实际生活中,很多人的密码都是几个月甚至几年也难换一次。 10. 购买更好的软件:在买下软件前,就让代码编写者先检查代码并修复客户应用中的安全漏洞。 本文出自:亿恩科技【www.enkj.com】 |
京公网安备41019702002023号