如何保证sql server免遭sql注入攻击?--

如何保证sql server免遭sql注入攻击?--

ID:20231226

大小:55.50 KB

页数:4页

时间:2018-10-09

如何保证sql server免遭sql注入攻击?--_第1页
如何保证sql server免遭sql注入攻击?--_第2页
如何保证sql server免遭sql注入攻击?--_第3页
如何保证sql server免遭sql注入攻击?--_第4页
资源描述:

《如何保证sql server免遭sql注入攻击?--》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、如何保证SQLServer免遭SQL注入攻击?>>  SQL注入攻击可能是黑客攻击面向互联网的SQLServer数据库最常用的方式。任何使用动态SQL、允许未经检验的用户输入提交到数据库的应用程序都面临SQL注入攻击的风险,无论你的网络有多安全,或者你安装了多少防火墙。最近有一项关于dash;也可能没有对语法或者转义符进行验证。  SQL注入攻击是这样进行的:攻击者修改现有命令行,通过在字符串值内插入一个单引号,或者在数字后面添加分号,在转义符后面写入SQL语句。命令行看上去类似这样:  execsel_CustomerDataCustomerId=47663;truncateT

2、ABLECustomer  这样会执行sel_CustomerData过程,然后运行truncateTABLE命令,删除Customer数据表的内容。如果有ForeignKey约束这个数据表,数据库将会返回错误,向黑客提供受约束的数据表名称。一名聪明的黑客可以利用这个技巧,查找到数据库里面每一个表的名称。然后,黑客能够将数据插入你的数据库,或者从你的表中选择数据(取决于数据库给了应用程序什么样的权限)。当黑客获取了数据表中的数据,就可以使用xp_sendmail或sp_send_dbmail向他们自己发送电子邮件。即使你已经禁用这些过程,黑客可以轻易启用这些过程,或者使用sp_O

3、A过程添加他们自己的过程。  如何确保SQLServer数据的安全,避免SQL注入?  有多种办法可以保护你的数据库,避免这样的攻击。  首先,我们需要采用数据库安全的最佳实践方法加固数据库安全。这包括将数据库的操作许可设置为最低级别(settingupthedatabasesecurityissionspossible.)。同时,应用程序不要直接访问数据表。所有对数据表的访问应该通过存储过程进行,而且那些存储过程不应该包括任何动态SQL。  避免对表的直接访问,你可以很大地减少受攻击的层面。但是,这并不是唯一必须做的事情。存储过程也存在受到攻击的可能性。虽然对存储过程进行攻击需

4、要花费更多的时间,但是,仍然有可能利用你的存储过程对数据库进行破坏。存储过程就是用来向数据库中插入、更新和删除数据。一个聪明的黑客可以利用你自己的存储过程攻击你。  这是需要应用开发人员和你共同工作的方面,以确保被执行的代码(thecodebeingexecutedagainstthedatabase)是安全的。如果不确保应用层的安全,防范SQL注入攻击,其他的工作都将是徒劳的。数据只要进入数据库,基本上不可能在数据库内进行验证。这需要在应用层对数据进行验证。  应用程序与数据库最简单配合使用的方法就是在应用程序内动态生成SQL命令。下面的示例中,.代码从前台应用程序中调用(po

5、pulate)v_Input变量:   Dimv_ConnAsNev_cmdAsNeand  v_cmd.Connection=v_Conn  v_cmd.mandType=mandType.Text  v_cmd.mandText=execsel_CustomerDataCustomerName=v_Input  Dimv_DRAsSqlDataReader  v_DR=v_cmd.executeReader  v_DR.Close()  v_DR=Nothing  v_cmd.Dispose()  v_cmd=Nothing  v_Conn.Close()  v_Conn=N

6、othing  v_DR.Close()  如果你不在v_Input变量中对数据进行验证,就相当于为SQL注入攻击敞开大门。如果你对输入不进行验证,就会允许攻击者传入一个单引号和一个分号,这样,将告诉SQLServer结束当前的语句,转而执行另一段sql语句passinasinglequote,andasemicolon,entmovingontothenextstatementinthebatch。例如像这样的值Smith;truncatetableCustomer;declaremyV=。通过SQLServer执行的SQL语句会变成:TheresultingSQLstatem

7、entexecutedagainsttheSQLServer  execsel_CustomerDataCustomerName=Smith;truncatetableC12下一页>>>>这篇文章来自..,。ustomer;declaremyV=  当应用程序(callingapplicationrunsthecode)运行这段代码的时候,将运行存储过程,然后表被清空。你需要进行一些基本的验证,将变量中的任何单引号替换为两个单引号。这样,就可以中止SQLServer运行删除语句t

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。