当前位置:首页 » 编程语言 » 杀毒软件可以阻止sql注入吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

杀毒软件可以阻止sql注入吗

发布时间: 2022-05-28 18:33:14

A. 如何彻底防止sql注入

1、对,限制用户输入肯定有效
2、应该也可以做到,但正则不是一种高效的方法,用HtmlEncode的方法可以有效防止空格等被DBMS解释,但注意别把编码、解码搞反了;存储过程是DBMS执行的一段程序,把数据操纵交给存储过程执行,而不是提交SQL语句,可以有效防止SQL注入。
3、地址栏的Sql攻击,下面我引用了一段资料解释,他关于机制说的较清楚,关于解决,只是从客户端考虑的,实际上用存储过程等都可以防范。
资料:
首先,入侵者会对一个网站确定可不可以进行注入,假设一篇文章的地址为:http://www.naohou.cn/show.asp?id=325一般会以提交两个地址来测试,如:
http://www.naohou.cn/show.asp?id=325 and 1=1
http://www.naohou.cn/show.asp?id=325 and 1=2
第一个地址后面加了 and 1=1,构成的SQL语句也就变为了:Select * from 表单名 where id=1 and 1=1这句话要成立就必须and前后语句都成立。那么前面的文章地址是可以访问的,后面的1=1也是客观成立的,那么第一个地址就可以正常显示;相反1=2是显然不成立的,关键就看这步了,如果提交and 1=2页面还是正常显示说明他并没有将and 1=2写入SQL语句,此站也就不存在注入漏洞;但如果提交and 1=2之后返回了错误页面则说明此站点将后面的语句带入了SQL语句并执行了,也就说明他可以进行SQL注入。(注:如果地址后面跟的是news.asp?id='1'就得变为news.asp?id=1' and '1'='1来补全引号了)
那么,知道可以注入后入侵者可以做什么呢?
这里就简单的说一下,比如提交这样的地址:
http://www.naohou.cn/show.asp?id=325 and exists (select * from 表名 where 列名=数据)
根据返回的正确或错误页面来判断猜的表名和列名是否正确,具体实现时是先猜表名再猜列名。当猜出表名和列名之后还可以用ASC和MID函数来猜出各列的数据。MID函数的格式为:mid(变量名,第几个字符开始读取,读取几个字符),比如:mid(pwd,1,2)就可以从变量pwd中的第一位开始读取两位的字符。ASC函数的格式为:ASC("字符串"),如:asc("a")就可以读出字母a的ASCII码了。那么实际应用的时候就可以写为:asc(mid(pwd,1,1))这样读取的就是pwd列的第一个字符的ASCII码,提交: asc(mid(pwd,1,1))>97以返回的页面是否为正确页面来判断pwd列的第一个字符的ASCII码是否大于97(a的ASCII码),如果正确就再试是否小于122(z的ASCII码)……这样慢慢缩小字符的ASCII码的范围,猜到真实的ASCII码也只是时间的问题。一位一位的猜就可以得到数据库中的用户名和密码了。还有一种ASP验证缺陷——就是用户名和密码都输'or '1'='1,构造SQL语句Select * form 表单名 where username='' or '1'='1' and pwd='' or '1'='1'就可以达到绕过密码验证的目的。
说了那么多,其实防范的方法很简单,我们把特殊字符(如and、or、'、")都禁止提交就可以防止注入了。ASP传输数据分为get和post两种, get是通过将数据添加到URL后提交的方式,post则是利用邮寄信息数据字段将数据传送到服务器。

B. 如何防止sql注入攻击

1,避免将用户提供的输入直接放入SQL语句中,最好使用准备好的语句和参数化查询,这样更加安全。
2,不要将敏感数据保存在纯文本中,加密存储在数据库中的私有或机密数据,这样可以提供另一级保护,以防止攻击者成功地排出敏感数据。
3,将数据库用户的功能设置为最低要求,这将限制攻击者在设法获取访问权限时可以执行的操作。
4,避免直接向用户显示数据库错误,攻击者可以使用这些错误消息来获取有关数据库的信息。
5,对访问数据库的Web应用程序使用防火墙,这样可以为面向Web的应用程序提供保护,可以帮助识别SQL注入尝试;根据设置,还可以帮助防止SQL注入尝试到达应用程序。
6,定期测试与数据库交互的Web应用程序,这样做可以帮助捕获可能允许SQL注入的新错误或回归。
7,将数据库更新为最新的可用修补程序,这可以防止攻击者利用旧版本中存在的已知弱点或错误。

C. 如何利用mcafee防止SQL注入!!!

1.sql注入这种应用层攻击用杀毒软件过滤,效果恐怕要打个问号,攻击者只要经验足够丰富,可以任意构造、编码出注入语句,不是简单的过滤下select、order就可以有效的。2.针对web攻击,各家安全厂商推出有web防火墙,一个1U的硬件设备,里面有各家公司的攻防高手积累的攻击代码特征,进而过滤阻拦web攻击,不只是sql注入,还有xss、csrf等等等等,即便是这样,web安全爱好者仍旧找

D. SQL注入怎么防范

SQL注入攻击的危害很大,而且防火墙很难对攻击行为进行拦截,主要的SQL注入攻击防范方法,具体有以下几个方面:
1、分级管理
对用户进行分级管理,严格控制用户的权限,对于普通用户,禁止给予数据库建立、删除、修改等相关权限,只有系统管理员才具有增、删、改、查的权限。
2、参数传值
程序员在书写SQL语言时,禁止将变量直接写入到SQL语句,必须通过设置相应的参数来传递相关的变量。从而抑制SQL注入。数据输入不能直接嵌入到查询语句中。同时要过滤输入的内容,过滤掉不安全的输入数据。或者采用参数传值的方式传递输入变量,这样可以最大程度防范SQL注入攻击。
3、基础过滤与二次过滤
SQL注入攻击前,入侵者通过修改参数提交and等特殊字符,判断是否存在漏洞,然后通过select、update等各种字符编写SQL注入语句。因此防范SQL注入要对用户输入进行检查,确保数据输入的安全性,在具体检查输入或提交的变量时,对于单引号、双引号、冒号等字符进行转换或者过滤,从而有效防止SQL注入。
当然危险字符有很多,在获取用户输入提交参数时,首先要进行基础过滤,然后根据程序的功能及用户输入的可能性进行二次过滤,以确保系统的安全性。
4、使用安全参数
SQL数据库为了有效抑制SQL注入攻击的影响。在进行SQLServer数据库设计时设置了专门的SQL安全参数。在程序编写时应尽量使用安全参数来杜绝注入式攻击,从而确保系统的安全性。
5、漏洞扫描
为了更有效地防范SQL注入攻击,作为系统管理除了设置有效的防范措施,更应该及时发现系统存在SQL攻击安全漏洞。系统管理员可以采购一些SQL漏洞扫描工具,通过专业的扫描工具,可以及时的扫描到系统存在的相应漏洞。
6、多层验证
现在的网站系统功能越来越庞大复杂。为确保系统的安全,访问者的数据输入必须经过严格的验证才能进入系统,验证没通过的输入直接被拒绝访问数据库,并且向上层系统发出错误提示信息。同时在客户端访问程序中验证访问者的相关输入信息,从而更有效的防止简单的SQL注入。但是如果多层验证中的下层如果验证数据通过,那么绕过客户端的攻击者就能够随意访问系统。因此在进行多层验证时,要每个层次相互配合,只有在客户端和系统端都进行有效的验证防护,才能更好地防范SQL注入攻击。
7、数据库信息加密
传统的加解密方法大致分为三种:对称加密、非对称加密、不可逆加密。

E. 防止sql注入问题

ASP编程门槛很低,新手很容易上路。在一段不长的时间里,新手往往就已经能够编出看来比较完美的动态网站,在功能上,老手能做到的,新手也能够做到。那么新手与老手就没区别了吗?这里面区别可就大了,只不过外行人很难一眼就看出来罢了。在界面的友好性、运行性能以及网站的安全性方面是新手与老手之间区别的三个集中点。而在安全性方面,新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI
2.0对网上的一些ASP网站稍加扫描,就能发现许多ASP网站存在SQL注入漏洞,教育网里高校内部机构的一些网站这种漏洞就更普遍了,可能这是因为这些网站大都是一些学生做的缘故吧,虽然个个都很聪明,可是毕竟没有经验,而且处于学习中,难免漏洞多多了。本文主要讲讲SQL注入的防范措施,而要明白这些防范措施的用处,须先详细讲解利用SQL注入漏洞入侵的过程。新手们看明白啦。

相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。如这是一个正常的网址http://localhost/lawjia/show.asp?ID=444,将这个网址提交到服务器后,服务器将进行类似Select
* from 表名 where 字段="&ID的查询(ID即客户端提交的参数,本例是即444),再将查询结果返回给客户端,如果这里客户端故意提交这么一个网址:

http://localhost/lawjia/show.asp?ID=444 and user>0,这时,服务器运行Select * from 表名
where 字段=444 and user>0这样的查询,当然,这个语句是运行不下去的,肯定出错,错误信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]将 nvarchar 值 'sonybb' 转换为数据类型为
int 的列时发生语法错误。
/lawjia/show.asp, 第 47 行

但是别有用心的人从这个出错信息中,可以获得以下信息:该站使用MS_SQL数据库,用ODBC连接,连接帐号名为:sonybb。所谓SQL注入(SQL
Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取想得到的资料。通常别有用心者的目标是获取网站管理员的帐号和密码。比如当某个人知道网站管理员帐号存在表login中,管理员帐号名为admin,他想知道管理员密码,这里他从客户端接着提交这样一个网址:
http://localhost/lawjia/show.asp?ID=444 and (Select password from login where
user_name='admin')>0,返回的出错信息如下:

·错误类型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]将 varchar 值 '!@#*&admin' 转换为数据类型为
int 的列时发生语法错误。
/lawjia/show.asp, 第 47 行

你知道吗?上面标红的部分就是管理员帐号admin的密码!虽然很复杂,让人看几遍也记不住的,但它就这样显示在你面前了,这时您就可以用这个帐号和密码接管人家的网站了!这时你可能还会说,如果他不是事先知道管理员帐号存在表login中,而且知道管理员帐号为admin,那他就不可能获得管理员密码。你错了,只要人家愿意多花时间尝试,他将可以获得数据库连接帐号权限内所能获得的所有信息!

当然这个过程是很烦琐的而且要花费很多的时间,如果只能以这种手动方式进行SQL注入入侵的话,那么许多存在SQL注入漏洞的ASP网站会安全很多了,不是漏洞不存在了,而是利用这个漏洞入侵的成本太高了。但是如果利用专门的黑客工具来入侵的话,那情况就大大不同了。手动方式进行SQL注入入侵至少需要半天或一天乃至很多天的时间,而利用专门的工具来入侵就只需要几分钟时间了(视网速快慢决定),再利用获得的管理帐号和密码,上传一个从网上下载的ASP后门程序,就轻易获得整个网站的管理权限了,甚至整个服务器的管理权限。最有名的一种SQL注入入侵工具是NBSI
2.0,现在已经出到2.0版本了,不过,人家正式名称不叫SQL注入入侵工具,而叫做网站安全漏洞检测工具。有了这个所谓的检测工具,使得入侵存在SQL注入漏洞的ASP网站成了小儿科的游戏,那些既不懂ASP又不懂SQL、年纪小小的男性青年常常得以在一天之内入侵十多个ASP网站,他们以此获得内心的极大满足。他们似乎也非常讲究职业道德,往往并不破坏网站数据和系统,常见的破坏方式大都仅仅是改换掉网站的主页,留下"善意的警告",如:你的网站存在SQL注入漏洞,请管理员做好防范措施!并声明"我没有破坏数据和系统",有的还要借机发布一下他的倡导:"国内网站大家不要入侵,有本事入侵小日本的!",最后,签上他的鼎鼎大名是必不可少的程序。
不知那些没注意过SQL注入漏洞的ASP程序员们看了上面的例子,要作何感想呢?如果您的网站就这样被人不费吹灰之力入侵了,您是不是要吐几升血了呢?也许您已经为系统安全费尽心思了,装补丁、安防火墙、装杀毒软件、巧妙配置IIS及数据库用户权限,但您就是没有注意到SQL注入漏洞,于是"千里之堤,溃于蚁穴"。防火墙与杀毒软件对SQL注入是没办法防范的,因为SQL注入入侵跟普通的WEB页面访问没什么区别,所以往往是防不甚防。而且一个服务器上放置的网站往往是有很多个的,服务器管理员不可能挨个网站挨个页面的审查其是否存在SQL注入漏洞。那么应该如何防范SQL注入入侵呢?作为服务器管理员或网站程序员应该分别怎么做呢?服务器管理员要做的事主要是配置IIS和数据库用户权限,而网站程序员主要是要在程序代码编写上防范SQL注入入侵。下面详细叙述:

对于服务器管理员,既然你不可能挨个检查每个网站是否存在SQL注入漏洞,那么就来个一个绝招。这个绝招能有效防止SQL注入入侵而且"省心又省力,效果真好!"SQL注入入侵是根据IIS给出的ASP错误提示信息来入侵的,如果你把IIS设置成不管出什么样的ASP错误,只给出一种错误提示信息,即http
500错误,那么人家就没办法入侵了。具体设置请参看图2。主要把500:100这个错误的默认提示页面
C:\WINDOWS\Help\iisHelp\common\500-100.asp改成
C:\WINDOWS\Help\iisHelp\common\500.htm即可,这时,无论ASP运行中出什么错,服务器都只提示HTTP 500错误。
但是这样设置一个不好的地方是程序员编写的代码出错时,服务器不给出详细的错误提示信息,会给程序员带来很大的不便。不过,服务器毕竟不是测试代码的地方,应坚持安全稳定第一,这样设置也是无可厚非的,事实上许多服务器的出错信息都是如此设置。

服务器管理员还应在IIS中为每个网站设置好执行权限,可千万别给人家静态网站以"脚本和可执行"权限。一般情况下给个"纯脚本"权限就够了,对于那些通过网站后台管理中心上传的文件存放的目录,就更吝啬一点吧,执行权限设为"无"好了,这样做是为了防止人家上传ASP木马,执行权限设为"无",人家上传ASP木马也运行不了。一般情况下,SQL注入漏洞仅是涉及一个网站安全的事,如果人家通过这个漏洞上传了ASP木马并运行起来,那整个服务器都失陷了。所以有远见的、有责任心的服务器管理员应该十分吝啬的配置IIS的执行权限。

同样的吝啬态度应适用于数据库用户的权限配置上,当然这里数据库是指MS_SQL啦,ACCESS都没有用户权限配置这一步骤。如果PUBLIC权限足够使用的绝不给再高的权限,可千万别把SA级别的权限随随便便地给人家啊。那个所谓的网站安全漏洞检测工具NBSI
2.0可有跨库进行SQL注入的功能啊,如果你把SA权限给了存在SQL注入漏洞的库,那其它库就不保啦!城门失火,殃及池鱼呀。而人家还可以通过调用xp_cmdshell命令得到系统的最高权限。具体步骤还是请参看上面提到的那篇《SQL注入漏洞全接触》这篇文章吧。

接下来要讲讲程序员的防范措施了。程序主要要做两件事,最重要的一件事,当然是对客户端提交的变量参数进行仔细地检测啦。对客户端提交的变量进行检查以防止SQL注入,有各种方法,到http://community.csdn.net/上搜索一下,你能获得许多有益信息。这里介绍一种现成的方法,别人已经写好了检测代码,拿来用一下,不用自己辛苦啦。那就是"枫叶SQL通用防注入V1.0
ASP版",这是一段对用户通过网址提交过来的变量参数进行检查的代码,发现客户端提交的参数中有"exec、insert、select、delete、from、update、count、user、xp_cmdshell、add、net、Asc"等用于SQL注入的常用字符时,立即停止执行ASP并给出警告信息或转向出错页面。大家可以到网上搜索一下,下载这段代码,存为一个ASP页面,如checkSQL.asp,把这个页面include到每个需要带参数查询SQL数据库ASP页面中,记住,只要加一行这样的<!--#include
file="checkSQL.asp"-->代码就行了。

程序员要做的第二件事是给用户密码加密啦。比如用MD5加密。MD5是没有反向算法,不能解密的。人家即使知道经加密后存在数据库里的像乱码一样的密码,他也没办法知道原始密码了。不过,人家可以用UPDATE方法用他的密码代替你的密码,但这个操作还是有点麻烦,人家可能会怕麻烦而放弃。而那个所谓的网站安全漏洞检测工具NBSI
2.0是没有提供UPDATE操作功能的,所以用MD5加密后,人家仅用NBSI
2.0而不辅以手动操作的话,就不可能获得网站管理员帐号的密码,这将挡住许多菜鸟级的攻击者,至少那些既不懂ASP又不懂SQL、年纪小小的男性青年是没有办法啦!

文章写到这,已经够长了,本来还想对那些所谓的网站安全漏洞检测工具如NBSI之流的黑客工具进行一番理性的探讨的,看来还是放弃好了。为了增强网站安全,了解攻击手段是必须的,但是,利用漏洞开发专门的黑客工具,使那些其实并不具备必要的网络技术和网络安全知识的人(就是文中提到的"既不懂ASP又不懂SQL、年纪小小的男性青年")轻而易举地侵入一家网站,这除了为许多网络管理员制造麻烦外,是否还具有加强网络安全意识提高网络安全水平的功效呢?

F. SQL 注入攻击是怎么回事怎样屏蔽

SQL注入攻击是由于程序没有过滤传入参数,导致程序原来的SQL语句+参数构成新的SQL语句执行了!
例如:
"select
*
from
admin
where
adminname
=
"&username&"
and
adminpass
=
"&userpass
这是一句简单的查询管理员用户名和密码是否正确的语句但是如果username和userpass为1
or
1
=
1
就形成了注入不是管理员也可以进入后台了!
防止SQL攻击的方法就是对传入参数进行过滤,现在网上有很多的通用过滤程序!
推荐使用
SQL通用防注入系统3.2
beta
这个版本是最新的SQL防注入系统!

G. 最近网站常常受到SQL注入攻击,请高手帮忙

你限制了id长度是在什么地方限制的?如果在客户端限制,是没有用的
、应该在HasKeywords函数里面在检查一下,

另外一正则过滤只能过滤未经编码的注入,以上注入显然经过编码,注入的语句已经不是字母了 都变成了数字,过滤自然失效

次注入中 使用的sql 的declare 命令 你可以在你的正则表达式中 将declare 过滤掉
另外 id里面不可能包含 %20(翻译过来就是空格) 所以也可以在正则中过滤掉 %20

H. 网站安全防护该如何防止SQL注入攻击

用WAF之类的安全产品防护,推荐你一个:WebShield,

“WatchDog-WebShield”是什么?

“WatchDog-WebShield”兼具WAF、数据风控、IPS/IDS、态势感知核心功能,以动态主动防护为理念,通过对服务器网页原始代码动态变幻,使服务器端网页成为不可预见测状态。对Web应用提供主动防护,不仅可以防护传统攻击行为,还可以有效防御传统手段乏力的自动化攻击。“WatchDog-WebShield”通过应用JS加密、变形元素、动态令牌、人机识别等创新技术,实现了从用户端到服务器端的全方位自动防护。可对各类Web、Html5提供强大的安全保护。

I. 网站数据库(SQL)被注入js木马,不知道怎么防

清除:可以用DW批量查找<script language=javascript src=一个网址></script>然后删除 或者使用Macfee 或 网站被挂马批量清除工具 来清除木马。

在清理完木马以后,尽量查找出是哪里出了问题,导致被挂马 有如下i个原因:1:网站自身安全漏洞,在程序上存在安全问题 比如SQL注入或者upfile上传漏洞 等 所以只要查找出问题所在 这就很容易去修复了, 如果你使用网上提供的开源的程序,那我想也会有针对漏洞的补丁。再或者你修复不明白的话就删除或者禁用这个文件。
2:如果你使用的是虚拟主机的话 可能是受同服务器下其他网站影响

3:如果你是单独服务器 在自身网站没问题的情况下,可能是ARP

J. 为啥电脑里的杀毒软件不能防sql注入

网站服务器才可能会被sql注入攻击,个人用户完全不用担心。
这种攻击手段都是黑客利用系统漏洞,不是病毒干的