预防SQL注射攻击(译自MSDN)

原创 2004年08月06日 12:49:00

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsqlmag04/html/InjectionProtection.asp

预防SQL注射攻击
Michael Otey
所有的关系型数据库——包括SQL  SERVER,ORACLE,IBM DB2和MYSQL都容易受到SQL注射攻击。你可以购买一些产品来保护你的系统免受SQL注射攻击,但在大多数商务中,预防SQL注射必须是基于代码级的。SQL注射攻击主要来自WEB应用程序将用户的包含动态SQL代码的输入转换成了SQL 命令给数据库执行。你可以采用下面的四个重要的步骤来保护你的WEB应用程序免受攻击。除此之外,上个月我在强调的MSDN中模式与训练也提出了一些保护数据库驱动的WEB应用程序的建议。
4.最小权力法则
应用程序使用的去连接数据库的帐户应该只拥有必须的特权,这样有助于保护整个系统尽可能少的受到入侵者的危害。应用程序不应该用SA或者管理员帐户去连接数据库。作为替代,它应该只有访问它要调用的单个库的权力。
3.验证所有的输入
如果一个输入框只可能包括数字,那么要通过验证确保用户输入的都是数字。如果可以接受字母,那就要检查是不是存在不可接受的字符。确保你的应用程序要检查以下字符:分号,等号,破折号,括号以及SQL关键字。.NET FRAMEWORK提供了正则表达式来进行复杂的模式匹配,运用它可以达到良好的效果。另外限制用户输入的字符的长度也是一个好主意。验证用户输入是必须的,因为入侵者可以利用WEB的开放性对应用程序进行SQL注射攻击。
2.避免动态的SQL语句
动态的SQL语句是一个进行数据库查询的强大的工具,但把它和用户输入混合在一起就使SQL注射成为了可能。将动态的SQL语句替换成预编译的SQL或者存储过程对大多数应用程序是可行的。预编译的SQL或者存储过程可以将用户的输入做为参数而不是SQL命令来接收,这样就限制了入侵者的行动。当然,它不适用于你的存储过程中是利用用户输入来生成SQL命令的情况。在这种情况下,用户输入的SQL命令仍可能得到执行,你的数据库仍然有受SQL注射攻击的危险。
1.使用双引号
使用双引号替换掉所有用户输入的单引号,这个简单的预防措施将在很大程序上预防SQL注射攻击,单引号常常结束掉SQL语句,可能给于输入者不必要的权力。用双引号替换掉单引号可以使许多SQL注射攻击失败。

C# winform 登陆成功打开主form,同时关闭登陆form

设置 Application.Run(new Form1());其中form1为主窗口,然后在form1的load方法里面这样写:代码private void Form1_Load(object se...
  • mane_yao
  • mane_yao
  • 2010年09月15日 17:41
  • 1892

C#因无打印机系统报错,模拟打印避免弹错

在开发过程中,因为有的门店没有置办打印机,所以下单自动打印总是弹出报错。 经过总结和讨论,最终决定使用模拟打印这一招,既避免了用户的误会。     public class NormalPrint...
  • yitonglizihao
  • yitonglizihao
  • 2018年01月26日 14:58
  • 70

360安全卫士防止木马攻击打补丁

  • 2009年05月03日 08:22
  • 9.1MB
  • 下载

mybatis如何防止sql注入

mybatis如何防止sql注入 sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如“or ‘1’=’1’”这样的语句,有可能入侵参数校验不足...
  • wangxin1982314
  • wangxin1982314
  • 2016年01月05日 13:11
  • 1296

SQL注入攻击入门篇

不管用什么语言编写的Web应用,它们都用一个共同点,具有交互性并且多数是数据库驱动。在网络中,数据库驱动的Web应用随处可见,由此而存在的SQL注入是影响企业运营且最具破坏性的漏洞之一,这里我想问,我...
  • happyniceyq
  • happyniceyq
  • 2016年10月14日 21:41
  • 1335

防微信打飞机图片资源

  • 2014年06月23日 09:59
  • 1.47MB
  • 下载

策略阻止安装打印机

1. 请暂时在打印服务器上开启Guest用户,右键点击打印服务器→“属性”→“安全”中添加Everyone,并且赋予合适的权限,查看客户端是否能够连接到打印服务器。2. 在打印服务器上查看用户权限,右...
  • mabohui
  • mabohui
  • 2009年07月23日 17:33
  • 2719

数据库注入攻击和防止注入攻击

Java程序实现用户登录,用户名和密码,数据库检查  演示被别人注入攻击 public class userdenglu { public static void main(String[] ...
  • xiaoyuxianshenging
  • xiaoyuxianshenging
  • 2017年07月28日 20:58
  • 153

SQL的注入式攻击方式和避免方法

出处:http://www.cnblogs.com/xyd21c/archive/2010/12/09/1901140.html感谢分享 SQL 注入是一种攻击方式,在这种攻击方式中,恶意代...
  • nawuyao
  • nawuyao
  • 2016年09月18日 09:34
  • 3554

sql手动注入常用步骤

前言 提起sql注入,相信大家并不陌生,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,从而达到和服务器进行直接的交互.有可能存在S...
  • hardhard123
  • hardhard123
  • 2018年03月22日 14:17
  • 87
收藏助手
不良信息举报
您举报文章:预防SQL注射攻击(译自MSDN)
举报原因:
原因补充:

(最多只允许输入30个字)