驱动管家:安全、高效、精准的专业驱动下载站!

sql server怎么加密?如何防范sql注入攻击?

2018-01-16 08:54:03责编:llp   来源:驱动管家     人气:

SQL Server上内置了加密术用来保护各种类型的敏感数据。在很多时候,这个加密术对于你来说是完全透明的;当数据被存储时候被加密,它们被使用的时候就会自动加密。在其他的情况下,你可以选择数据是否要被加密。

sql server怎么加密?如何防范sql注入攻击?

SQL Server可以加密下列这些组件:·密码 ·存储过程,视图,触发器,用户自定义函数,默认值,和规则。·在服务器和用户之间传输的数据

密码加密术

SQL Server自动将你分配给登陆和应用角色的密码加密。尽管当你可以从主数据库中直接察看系统表格而不需要密码。你不能给对这种情况作出任何修改,事实上,你根本不能破坏它。

定义加密术

在有些时候,如果对对象进行加密是防止将一些信息分享给他人。例如,一个存储进程可能包含所有者的商业信息,但是这个信息不能和让其他的人看到,即使他们公开的系统表格并可以看到对象的定义。这就是为什么SQL Server允许你在创建一个对象的时候进行加密。为了加密一个存储进程,使用下面形式的CREAT PROCEDURE 语句:

create PROCEDURE procedurename [;number][@parameter datatype[VARYING][ = defaultvalue][OUTPUT]][, …][WITH RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION]

我们关心的仅仅是可选的WITH参数。你可以详细说明ARECOMPILE或者ENCRYPTION,或者你可以同时说明它们。ENCRYPTION关键字保护SQL Server它不被公开在进程中。结果,如果ENCRYPTION在激活的时候系统存储进程sp_helptext就会被忽视,这个存储进程将被存储在用户创建进程的文本中。如果你不想要加密,你可以使用alter PROCEDURE,忽略WITH ENCRYPTION子句来重新创建一个进程。

为了能够使用加密术。用户和服务器都应该使用TCP/IP NetworkLibraries用来连接。运行适当的Network Utility和检查Force protocol encryption,看下表,用户和服务器之间的连接将不会被加密。

加密也不能完全自由。当连接确定后,要继续其他的构造,并且用户和服务器必须运行代码来解释加密和解释的包裹。这里将需要一些开销并且当在编译码的时候会使进程慢下来。如果网络包裹在你控制范围之外,使用这种做法是非常好的。

加密术中缺少什么?

你可以注意到在这个列表中缺少一些被加密的东西:你表格中的数据。在你存储数据之前,SQL Server不会提供任何内置的工具来加密你的数据。如果你需要保护存储在SQL Server上的数据,我们给你两条建议:第一,你可以利用GRANT 和DENY关键字来控制你想哪个用户可以在SQL Server中读取的数据。

第二.如果你真的想对数据加密,不要设法加密码。你可以利用被测试过的商业产品的算法。

SQL 注入攻击

SQL 注入攻击是一个常规性的攻击,它可以允许一些不法用户检索你的数据,改变服务器的设置,或者在你不小心的时候黑掉你的服务器。SQL 注入攻击不是SQL Server问题,而是不适当的程序。如果你想要运行这些程序的话,你必须明白这冒着一定的风险。

测点定位弱点

SQL 注入的脆弱点发生在程序开发员构造一个where 子句伴随着用户的输入的时候。比如,一个简单的ASP程序允许用户输入一个顾客的ID然后检索公司的全部人员的名字,如果顾客ID如果作为ASP页面的请求串的一部分返回,那么开发员可以编写下面的代码获得数据:

strConn = "Provider=SQLOLEDB;Data Source=(local);" & _"Database=Northwind;Integrated Security=SSPI"Set cnn = Server.createObject("ADODB.Connection")cnn.Open strConnstrQuery = "select ContactName FROM Customers " & _"where CustomerID = '" & Request.Form("CustID") & "'"Set rstResults = cnn.Execute(strQuery)Response.Write(rstResults.Fields("ContactName").Value)

现在你知道什么地方有问题了吧?如果用户知道一个用户的ID,他可以通过检索来获得全部的相应的名字。现在明白了?获得额外的数据

当然,对于一个攻击程序,尽管它不知道任何顾客的ID,甚至不用去猜,它也可以获得数据。为了完成这个工作,它将下面的文本输入到应用程序调用顾客ID的textbox中:

customer ID:'union ALL select ContactName FROM Customerswhere CustomerID <>'

如果你输入了这个代码,你将会看到返回一个询问语句:

select ContactName FROM Customerswhere CustomerID = ''union ALL select ContactName FROM Customerswhere CustomerID <>''

 通过获得空和非空顾客的ID并集,这个查询语句会返回数据库中所有的相关姓名。事实上,这个union技术可以被用来获得你数据库中大多数信息,看看这个CustomerID的值:

 'union ALL select FirstName ' ' LastName FROMEmployees where LastName <>'

它将SQL语句变成:

select ContactName FROM Customerswhere CustomerID = ''union ALL select FirstName ' ' LastName FROMEmployees where LastName <>''

看,那就是攻击程序从你的数据库获得的第一个雇员的名字。

更多的攻击程序

如果SQL注入仅仅只有数据暴光这个弱点就已经够糟糕的了,但是,实际上一个良好的攻击程序可以通过这个弱点获取你数据库中所有的资料。看下面这个例子:

';drop TABLE Customers;--

SQL语句变成:

select ContactName FROM Customerswhere CustomerID = ''; drop TABLE Customers;-- '

这个分号使语句和SQL Server隔离,所以,这里实际上是两个语句。第一个语句不存在的名字,第二个则撤消的整个Customers表。两个—SQL Server注释符,它可以使子句不发生语法错误。

使用这个技术的变异,一个攻击程序可以在任何SQL语句或者存储过程上运行。通过使用xp_cmdshell扩展存储过程,一个攻击程序同样可以在操作系统命令下运行,显然,这是一个严重的漏洞。

保护自己的数据库

现在,你知道如何防范SQL注入攻击了吗?首先,你不能在用户输入中构造where子句,你应该利用参数来使用存储进程。在最初的ASP页面下,重新写的部分将和刚才我们在表中所看到的东西相似。即使你认为在你的应用程序中没有脆弱点,你应该遵守最小特权原则。使用我们建议的其他安全技术允许你的用户仅仅访问他们能够访问的。在你没有发现你数据库脆弱点的时候,只有这样,不会使你的数据库崩溃。

最后的建议这就是全部的SQL Server安全系列。也许你现在不是一个全面的专家,但是你已经了解了很多反面。下一步就是你要保护你SQL Server数据,记住你在这里所学到的知识,并利用到你的数据库中保证你的数据不被那些黑客攻击。

  • 什么是ip欺骗?ip欺骗的原理

    什么是ip欺骗?ip欺骗的原理

    即使是很好的实现了TCP IP协议,由于它本身有着一些不安全的地方,从而可以对TCP IP网络进行攻击。这些攻击包括序列号欺骗,路由攻击,源地址欺骗和授权欺骗。本文除了介绍IP欺骗攻击方法外,还介绍怎样防止这个

    详情2018-01-06 18:36:30责编:llp   来源:驱动管家     
  • 什么是非对称加密?什么是对称加密?

    什么是非对称加密?什么是对称加密?

    今天刚好为站点的后台弄了下https,就来分享我了解的吧。密码学最早可以追溯到古希腊罗马时代,那时的加密方法很简单:替换字母。早期的密码学:古希腊人用一种叫 Scytale 的工具加密。更快的工具是 transposi

    详情2018-01-15 17:27:37责编:llp   来源:驱动管家     
  • asp木马怎么破解?asp木马破解密码的步骤

    asp木马怎么破解?asp木马破解密码的步骤

    破解目标:破解一asp木马的经过加密的登破解asp木马密码陆密码。由于木马里没有版本说明,具体也不知道这木马叫什么名。破解思路:两种,用加密后的密码替换密文和利用密文及加密算法反解出密码。前者根本算不上

    详情2018-01-12 18:07:30责编:llp   来源:驱动管家     
  • 如何破解webshell的密码,成功获取webshell?

    如何破解webshell的密码,成功获取webshell?

    Burp Suite是一个Web应用程序集成攻击平台,它包含了一系列burp工具,这些工具之间有大量接口可以互相通信,这样设计的目的是为了促进和提高整个攻击的效率。推荐下载:软件名称:burpsuite pro v1 4 07+key注

    详情2018-01-12 11:52:18责编:llp   来源:驱动管家     
  • 怎么获取ip地址?如何防范ip地址泄露?

    怎么获取ip地址?如何防范ip地址泄露?

    在正式进行各种“黑客行为”之前,黑客会采取各种手段,探测(也可以说“侦察”)对方的主机信息,以便决定使用何种最有效的方法达到自己的目的。来看看黑客是如何获知最基本的网络信息——对方的IP地址;以及用户如

    详情2018-01-13 18:10:20责编:llp   来源:驱动管家     
  • 恶意程序:开发工具blackhole是怎么勒索的?

    恶意程序:开发工具blackhole是怎么勒索的?

    随着时代的发展,当代木马恶意软件的趋势并不仅仅是通过洪水般的广告让你电脑当机或者是偷取你的银行密码,而是会将你的电脑锁住,让你不能干任何事情,除非你交了“赎金”。最近流行的“勒索软件”首次发现是在a

    详情2018-01-02 16:03:19责编:llp   来源:驱动管家     
  • ghost系统有漏洞 有问题的ghost系统哪些?
    详情2018-01-05 18:34:15责编:llp   来源:驱动管家     
  • ewebeditor漏洞利用的原理 ewebeditor漏洞如何利用?

    ewebeditor漏洞利用的原理 ewebeditor漏洞如何利用?

    漏洞的利用原理很简单,请看Upload asp文件:任何情况下都不允许上传asp脚本文件sAllowExt = Replace(UCase(sAllowExt), "ASP ", " ")修补方法:用以下语句替换上面那局话dim sFileType,Un_FileType,FileTypes

    详情2018-01-07 09:12:54责编:llp   来源:驱动管家     
  • 哪些电脑容易被黑客入侵3389端口?防范黑客入侵3389端口的办法

    哪些电脑容易被黑客入侵3389端口?防范黑客入侵3389端口的办法

    你的ADSL用户名和密码不安全刚刚上网看了会儿新闻,和朋友聊了聊天。之后打游戏的时候,发现比平时要卡,不知道是什么原因,难道是网络问题吗?不管它了。听同事说美剧《英雄》不错,准备今天晚上不关机了,把它

    详情2018-01-11 09:03:49责编:llp   来源:驱动管家     
  • 心脏出血漏洞的相关问题及解答

    心脏出血漏洞的相关问题及解答

    小编带来了openssl安全漏洞介绍,想知道openssl心脏出血漏洞防治方法是什么吗?近日,openssl心脏出血漏洞被曝光,该漏洞影响范围甚广,大家可以通过下文了解详细信息。--什么是SSL?SSL是一种流行的加密技术,可以

    详情2018-01-02 17:24:41责编:llp   来源:驱动管家