当前位置:首页 » 编程语言 » sql注入攻击特点
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sql注入攻击特点

发布时间: 2022-06-02 19:16:32

sql注入攻击怎么解决

网络:

SQL注入攻击是你需要担心的事情,不管你用什么web编程技术,再说所有的web框架都需要担心这个的。你需要遵循几条非常基本的规则:
1)在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制。大多数的数据API,包括ADO和ADO. NET,有这样的支持,允许你指定所提供的参数的确切类型(譬如,字符串,整数,日期等),可以保证这些参数被恰当地escaped/encoded了,来避免黑客利用它们。一定要从始到终地使用这些特性。
例如,在ADO. NET里对动态SQL,你可以象下面这样重写上述的语句,使之安全:
Dim SSN as String = Request.QueryString("SSN")
Dim cmd As new SqlCommand("SELECT au_lname,au_fname FROM authors WHERE au_id = @au_id")
Dim param = new SqlParameter("au_id",SqlDbType.VarChar)
param.Value = SSN
cmd.Parameters.Add(param)
这将防止有人试图偷偷注入另外的SQL表达式(因为ADO. NET知道对au_id的字符串值进行加码),以及避免其他数据问题(譬如不正确地转换数值类型等)。注意,VS 2005内置的TableAdapter/DataSet设计器自动使用这个机制,ASP. NET 2.0数据源控件也是如此。
一个常见的错误知觉(misperception)是,假如你使用了存储过程或ORM,你就完全不受SQL注入攻击之害了。这是不正确的,你还是需要确定在给存储过程传递数据时你很谨慎,或在用ORM来定制一个查询时,你的做法是安全的。
2) 在部署你的应用前,始终要做安全审评(security review)。建立一个正式的安全过程(formal security process),在每次你做更新时,对所有的编码做审评。后面一点特别重要。很多次我听说开发队伍在正式上线(going live)前会做很详细的安全审评,然后在几周或几个月之后他们做一些很小的更新时,他们会跳过安全审评这关,推说,“就是一个小小的更新,我们以后再做编码审评好了”。请始终坚持做安全审评。
3) 千万别把敏感性数据在数据库里以明文存放。我个人的意见是,密码应该总是在单向(one-way)hashed过后再存放,我甚至不喜欢将它们在加密后存放。在默认设置下,ASP. NET 2.0 Membership API 自动为你这么做,还同时实现了安全的SALT 随机化行为(SALT randomization behavior)。如果你决定建立自己的成员数据库,我建议你查看一下我们在这里发表的我们自己的Membership provider的源码。同时也确定对你的数据库里的信用卡和其他的私有数据进行了加密。这样即使你的数据库被人入侵(compromised)了的话,起码你的客户的私有数据不会被人利用。
4)确认你编写了自动化的单元测试,来特别校验你的数据访问层和应用程序不受SQL注入攻击。这么做是非常重要的,有助于捕捉住(catch)“就是一个小小的更新,所有不会有安全问题”的情形带来的疏忽,来提供额外的安全层以避免偶然地引进坏的安全缺陷到你的应用里去。
5)锁定你的数据库的安全,只给访问数据库的web应用功能所需的最低的权限。如果web应用不需要访问某些表,那么确认它没有访问这些表的权限。如果web应用只需要只读的权限从你的account payables表来生成报表,那么确认你禁止它对此表的 insert/update/delete 的权限。
6)很多新手从网上下载SQL通用防注入系统的程序,在需要防范注入的页面头部用 来防止别人进行手动注入测试(。
可是如果通过SQL注入分析器就可轻松跳过防注入系统并自动分析其注入点。然后只需要几分钟,你的管理员账号及密码就会被分析出来。
7)对于注入分析器的防范,笔者通过实验,发现了一种简单有效的防范方法。首先我们要知道SQL注入分析器是如何工作的。在操作过程中,发现软件并不是冲着“admin”管理员账号去的,而是冲着权限(如flag=1)去的。这样一来,无论你的管理员账号怎么变都无法逃过检测。
第三步:既然无法逃过检测,那我们就做两个账号,一个是普通的管理员账号,一个是防止注入的账号,为什么这么说呢?笔者想,如果找一个权限最大的账号制造假象,吸引软件的检测,而这个账号里的内容是大于千字以上的中文字符,就会迫使软件对这个账号进行分析的时候进入全负荷状态甚至资源耗尽而死机。下面我们就来修改数据库吧。
⒈对表结构进行修改。将管理员的账号字段的数据类型进行修改,文本型改成最大字段255(其实也够了,如果还想做得再大点,可以选择备注型),密码的字段也进行相同设置。
⒉对表进行修改。设置管理员权限的账号放在ID1,并输入大量中文字符(最好大于100个字)。
⒊把真正的管理员密码放在ID2后的任何一个位置(如放在ID549上)。
由于SQL注入攻击针对的是应用开发过程中的编程不严密,因而对于绝大多数防火墙来说,这种攻击是“合法”的。问题的解决只有依赖于完善编程。专门针对SQL注入攻击的工具较少,Wpoison对于用asp,php进行的开发有一定帮助...。

② 什么是SQL注入攻击

select * from where username="admin" and pwd="123" (这种不安全)
select * from where username="admin" and pwd="123" or 1=1 (别人获得到你上面的那个查询语句后面加上一个1=1,那么不管你前面的条件成立与否,人家都能登录)
这就是sql注入攻击,就是指sql拼字符串那种方法不安全,最好使用占位符那种方式。

③ 什么是SQL注入攻击

SQL 注入是注入式攻击中的常见类型。 SQL 注入式攻击是未将代码与数据进行严格的隔离 ,导致在读取用户数据的时候 , 错误地把数据作为代码的一部分执行 , 从而导致一些安全问题。

SQL 注入自诞生以来以其巨大的杀伤力闻名。典型的 SQL 注入的例子是当对 SQL 语旬进行字符串拼接操作时 , 直接使用未加转义的用户输入内容作为变量 ,比如 :

实例

在上面的例子中 ,如果用户输入的 ID 只是一个数字是没有问题的 , 可以执行正常的查询语句。但如果直接用“;”隔开,在 testCondition 里插入其他 SQL 语旬,会带来意想不到的结果,比如输入 drop 、 delete 等。

④ SQL注入攻击原理和漏洞检测技术

SQL注入指的是当用户提交给服务器的数据不在程序员的预料范围内时,服务器返回了一些敏感信息。通常这个是参数过滤不严格造成的,是程序员的责任。 举个例子吧 比如有这个页面 http://www.xxx.com/showdetail.asp?id=1 这个地址后有个问号,后面有个id=1这就是用户提交给服务器的参数 假如给后面添加个 ',这个是非法参数地址变成 http://www.xxx.com/showdetail.asp?id=1 '然后没有过滤掉'的服务器会给我们返回如下信息 Microsoft JET Database Engine 错误 '80040e14' 字符串的语法错误 在查询表达式 'ID=1'' 中。 /showdetail.asp,行11 这些都是有用的信息,这意味着sql注入攻击的原理就是利用非法参数获得敏感信息,收集整理,分析出管理账号密码 那么如何检测网页能否注入呢 光一个'是不够的 正确的应该是这样 1, http://www.xxx.com/showdetail.asp?id=1 页面正常显示 2, http://www.xxx.com/showdetail.asp?id=1 and 1=1 页面显示正常 3, http://www.xxx.com/showdetail.asp?id=1 and 1=2 页面返回错误信息时 如果满足以上三条,基本上就可一注入攻击了 猜解管理账号密码可以手动,但是比较麻烦,得有sql语法知识和经验,算是穷举+推测的,不常用 我推荐直接使用程序猜解,网络搜搜到处有

⑤ SQL注入攻击

有漏洞的脚本才有机会给你攻击,比如一个带参数的删除脚本a.asp?action=del&id=2
你可以改为a.asp?action=del&id=2 or 1
这样就有可能删除全部数据

⑥ SQL注入攻击有哪些主要的特点

1、变种极多
有经验的攻击者,也就是黑客会手工调整攻击的参数,致使攻击的数据是不可枚举的,这导致传统的特征匹配方法仅能识别到相当少的攻击。或者是最常规的攻击,难以做到防范。
2、攻击简单
攻击过程简单,目前互联网上流行的众多SQL注入攻击工具,攻击者借助这些工具可以很快的对目标网站进行攻击或者是破坏,危害大。
3、危害极大
由于web语言自身的缺陷,以及具有安全编程的开发人员较少,大多数web应用系统均具有被SQL注入攻击的可能,而攻击者一旦攻击成功,就可以对控制整个web应用系统对数据做任何的修改或者是窃取,破坏力达到了极致。

⑦ SQL注入的特点与危害分别有哪些

1、广泛性:任何一个基于SQL语言的数据库都可能被攻击,很多开发人员在编写Web应用程序时未对从输入参数、Web表单、Cookie等接收到的值进行规范性验证和检测,通常会出现SQL注入漏洞。
2、隐蔽性:SQL注入语句一般都嵌入在普通的HTPP请求中,很难与正常语句区分开,所以当前许多防火墙都无法识别予以警告,而且SQL注入变种极多,攻击者可以调整攻击的参数,所以使用传统的方法防御SQL注入效果非常不理想。
3、危害大:攻击者可以通过SQL注入获取到服务器的库名、表名、字段名,从而获取到整个服务器中的数据,对网站用户的数据安全有极大的威胁。攻击者也可以通过获取到的数据,得到后台管理员的密码,然后对网页页面进行恶意篡改。这样不仅对数据库信息安全造成严重威胁,对整个数据库系统安全也有很大的影响。
4、操作方便:互联网上有很多SQL注入工具,简单易学、攻击过程简单,不需要专业的知识也可以自如运用。

⑧ 如何对一个网站进行SQL注入攻击

1.POST注入,通用防注入一般限制get,但是有时候不限制post或者限制的很少,这时候你就可以试下post注入,比如登录框、搜索框、投票框这类的。另外,在asp中post已被发扬光大,程序员喜欢用receive来接受数据,这就造成了很多时候get传递的参数通过post/cookie也能传递,这时如果恰好防注入程序只限制了get,因此post注入不解释
2.cookie注入,原理同post注入,绕过相当多通用防注入
3.二次注入,第一次注入的数据可能不会有效,但是如果将来能在某个页面里面被程序处理呢?注入来了……
4.csrf,适合后台地址已知并且存在已知0day,可以试试用csrf劫持管理员来进行操作(这招其实不属于sql注入了)
5.打碎关键字,比如过滤select,我可以用sel/**/ect来绕过,这招多见于mysql
6.有时候也可以sELeCT这样大小写混淆绕过
7.用chr对sql语句编码进行绕过
8.如果等于号不好使,可以试试大于号或者小于号,如果and不好使可以试试or,这样等价替换
9.多来几个关键字确定是什么防注入程序,直接猜测源码或者根据报错关键字(如"非法操作,ip地址已被记录")把源码搞下来研究
10.记录注入者ip和语句并写入文件或数据库,然而数据库恰好是asp的,插马秒杀

⑨ 什么是sql注入攻击

SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。

⑩ sql注入攻击有可能产生什么危害

数据库信息泄露:数据中存放的用户的隐私信息的泄露;
网页篡改:通过操作数据库对特定网页进行篡改;
数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员账户被篡改;
服务器被远程控制,被安装后门;
删除和修改数据库表信息。