原文
代码在
以下是翻译的部分片断:
原则 | 执行 |
永远不相信用户的输入 | 用验证控件,正则表达式,代码等等方式了来验证所有输入框 |
永远不使用动态SQL |
|
永远不使用管理员级别的帐户连接数据库 | 使用权限受限的帐户连接数据库 |
不要使用明文存储敏感信息 | 将密码和其他敏感信息加密或者hash,连接字符串应该总是被加密 |
异常应该暴露最小的信息 | 不要展现太多信息在错误消息里面;用户自定义错误来执行异常获取错误处理,以最小化错误信息;把debug设为false. |
认识到SQL注入攻击不仅限于SQL SERVER是很重要的.其他数据库,包括Orancle,MySQL,DB2,Sybase以及其它数据库都是很容易受到此类攻击.SQL注入攻击是可能发生的,这是因为SQL语言包含一些特性,这些特性使它非常强大和灵活,即
- 通过使用一对"-"(也就是--)插入注释的能力
- 包多个SQl语句放在一起,并且在一个批处理中完成的能力
- 用SQL从一组标准的系统表中来查询元数据的能力
一般来讲,数据库支持的SQL特性越强大,它就越容易受到攻击。因此SQL SERVER经常成为攻击的目标也就不足为奇。