预防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注射攻击失败。

java类过滤器,防止页面SQL注入

转自:http://www.oschina.net/code/snippet_811941_14131package com.tarena.dingdang.filter; import java...
  • ykletters
  • ykletters
  • 2017年03月17日 17:02
  • 568

过滤sql特殊字符及预防sql注射

1.过滤不安全的字符串     ///       /// 过滤不安全的字符串     ///       ///       ///       public static string...
  • xiangwenfly
  • xiangwenfly
  • 2014年10月11日 11:27
  • 387

php防止SQL注入详解及防范(输入过滤,输出转义)

一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需...
  • fanblog
  • fanblog
  • 2016年09月19日 10:08
  • 3576

C# 正则表达式 过滤危险字符函数代码 防SQL注入 很全面的SQL关键字过滤

using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
  • dq9005
  • dq9005
  • 2013年05月02日 09:17
  • 2644

java 过滤器filter防sql注入

XSSFilter.java [java] view plaincopy public void doFilter(ServletRequest servletrequest,...
  • lqclh502
  • lqclh502
  • 2015年08月19日 09:39
  • 1670

对输入进行长度限制和字符过滤,防止SQL注入

长度限制和字符过滤 SQL注入攻击的总体思路: 发现SQL注入位置;判断服务器类型和后台数据库类型;确定可执行情况 对于有些攻击者而言,一般会采取sql注入法。下面我也谈一下自己关于...
  • dongge825
  • dongge825
  • 2013年12月30日 15:34
  • 4947

ctf sql注入关键词绕过【积累中】

0x00 sql注入的原因 sql注入的原因,表面上说是因为 拼接字符串,构成sql语句,没有使用 sql语句预编译,绑定变量。 但是更深层次的原因是,将用户输入的字符串,当成了 “sql语句” 来执...
  • wy_97
  • wy_97
  • 2017年09月25日 15:25
  • 2551

SQL注入防御之二——注入关键词过滤(PHP)

SQL Injection:就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 概述  欢迎来到本人的SQL注入防御系列的第二篇文章,...
  • Tim_phper
  • Tim_phper
  • 2016年08月23日 10:51
  • 3376

JSP过滤器防止SQL注入

SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏 忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。 filter功能.它使用户可以改变一个...
  • Smile_7x
  • Smile_7x
  • 2014年02月13日 18:26
  • 3188

实用:防止SQL、XSS等注入攻击的Filter

本文主要原理是转换过滤或拦截请求中的非法字符 FILTER代码: XssFilter.java /** * {@link CharLimitFilter} * * 拦截防止XSS注入 *...
  • johennes
  • johennes
  • 2013年08月26日 15:46
  • 3059
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:预防SQL注射攻击(译自MSDN)
举报原因:
原因补充:

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