前段时间公司网站被攻击了,介于此事件,我研究了一番风靡一时的SQL注入,传说他易攻难防,但个人感觉,只要自己在编程序时把安全性问题时刻记在 心里,任何对程序有恶意操作的举动,都不可以轻易得程。以下是我对防范SQL注入的几种措施,如有不足请及时留言通知,感激不尽!
SQL 注入式攻击:
恶意代码插入到字符串中,然后将该字符串传递到 SQL Server 的实例以进行分析和执行。 任何构成 SQL 语句的过程都应进行注入漏洞检查。
详细请看:http://msdn.microsoft.com/zh-cn/library/ms161953(SQL.90).aspx
防范措施 :
1> : 验证所有输入 ( Cookie,url 参数,FORM 表单 ) ,始终通过测试类型、长度、格式和范围来验证用户输入,实现多层验证。如果可能 单引号 ,双引号 ,分号 ,逗号 ,冒号 ,连接号 等进行转换或者过滤,验证 SQL 关键字时注意不区分大小写。
2> : 在存储过程中使用参数化输入或在动态 SQL 中使用参数集合
SQL Server 中的 Parameters 集合提供了类型检查和长度验证。如果使用 Parameters 集合,则输入将被视为文字值而不是可执行代码,使用 Parameters 集合的另一个好处是可以强制执行类型和长度检查。范围以外的值将触发异常。
3> :验证上传文件内容
如果上传了图片后,不对该文件的内容采取任何判断的话,那么图片木马也很有可能被上传
4>: IIS 出错信息设置
把 IIS 设置成不管出什么样的错误,只给出一种错误提示信息,即 http 500 错误。 IIS 中为每个网站设置好执行权限,并做好日志记录。
5>: 最小权限连接数据库
如果 PUBLIC 权限足够使用的绝不给再高的权限。
6>: 删除没必要的系统存储过程
MSSQL 数据库系统集成了较多的存储过程,这些命令集方便了我们的操作当然也为攻击者入侵 Web 提供了便利。因此我们要根据需要删除某些在 Web 中用不到的,并且可被攻击者利用才存储过程。比如 xp_regread 和 xp_dirtree 这两个存储过程可被攻击者用来读取注册表信息和列目录,我们可以删除。另外, xp_cmdshell 可被用来执行 DOS 命令比如建立系统帐户等等,是非常危险的。 sp_makwebtask 过程,可以读取 SQL SELECT 命令所得到的结果到表格形式的 HTML 文件中。这些比较危险可被攻击者利用的存储过程我们可以删除。比如删除 xp_cmdshell 可以执行 “exec master..sp_dropextendedproc xp_cmdshell” ,其它的类似