仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 725|回复: 8
打印 上一主题 下一主题

[学习教程] Sql Server中怎样回护数据库工具的界说

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:07:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
mysql使用内部操作字符集gbk来进行操作,即执行"SELECT*FROMtestWHEREname=xxxor1=1/*LIMIT1";从而注入成功先分明甚么是数据库工具的界说?
好比,我们利用sql语句创立一个表:
createtabletest
(
idint,
namevarchar(50)
)

那末,下面的代码就是表test的界说,触发器,视图等等都是云云。

这些信息偶然候是对照主要的,我们其实不但愿被利用者看到,那末在SqlServer怎样回护数据库工具界说,制止产生过分表露敏感信息?

一样平常的回护措施是在创立工具时利用WITHENCRYPTION来把工具加密,如许就没法检察界说。可是成绩是关于保护来讲就成了成绩,并且备份复原时这部分工具是会丧失的。

个中一个办理办法是在加密前,把界说语句放到工具的【扩大属性】中保留,如许能办理下面的成绩。
示例:
--1、创建已加密的存储历程
USEAdventureWorks
GO
CREATEPROCtest
WITHENCRYPTION
AS
SELECTSUSER_SNAME(),
USER_NAME()
GO

--2、将上述界说内容往除,使用短语加密搭配EncryptByPassPhrase函数加密,然后在用sys.sp_addextendedproperty存储历程,指定一个扩大称号。
USEAdventureWorks
GO
DECLARE@sqlVARCHAR(MAX)
SET@sql=CREATEPROCTestWITHENCRYPTIONASSELECTsuer_sname(),user_name()GO

--3、将内容加密后转换成sql_variant数据范例
DECLARE@bsqlSQL_VARIANT
SET@bsql=(SELECTCONVERT(SQL_VARIANT,ENCRYPTBYPASSPHRASE(P@ssw0rd,CONVERT(VARCHAR(MAX),@sql)))
)

--4、新增到指定存储历程的扩大属性中:
EXECsys.sp_addextendedproperty@name=Ntest界说,@value=NSystem.Byte[],
@level0type=NSCHEMA,@level0name=Ndbo,@level1type=NPROCEDURE,
@level1name=Ntest
GO
EXECsys.sp_addextendedproperty@name=N代码内容,
@value=NCREATEPROCTestWITHENCRYPTIONASSELECTsuer_sname(),user_name()GO,
@level0type=NSCHEMA,@level0name=Ndbo,@level1type=NPROCEDURE,
@level1name=Ntest
GO

--5、复原
DECLARE@pwdVARCHAR(100)=P@ssw0rd
--暗码短语

DECLARE@procVARCHAR(100)=test
--存储历程名

DECLARE@exNameNVARCHAR(100)=代码内容
--扩大属性名

--将底本了局查询
SELECTvalueFROMsys.all_objectsASsp
INNERJOINsys.extended_propertiesASPONP.major_id=sp.object_idANDP.minor_id=0ANDP.class=1
WHERE(P.name=@exName)
AND((sp.type=Np
ORsp.type=Nrf
ORsp.type=pc
)
AND(sp.name=@procANDSCHEMA_NAME(sp.schema_id)=Ndbo)
)
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继
只想知道 该用户已被删除
沙发
发表于 2015-1-18 12:01:36 | 只看该作者
原来公司用过MYSQL自己也只是建个表写个SQL
板凳
发表于 2015-1-26 15:32:35 | 只看该作者
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
简单生活 该用户已被删除
地板
 楼主| 发表于 2015-2-4 20:37:25 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
admin 该用户已被删除
5#
发表于 2015-2-10 09:17:02 | 只看该作者
对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。
第二个灵魂 该用户已被删除
6#
发表于 2015-3-1 08:56:36 | 只看该作者
而写到本地,我又考虑到效率问题.大家来讨论讨论吧,分数不打紧,就给10分,十全十美,没啥对错,各抒己见,但是要有说服力的哦~
变相怪杰 该用户已被删除
7#
发表于 2015-3-10 16:00:33 | 只看该作者
总感觉自己还是不会SQL
山那边是海 该用户已被删除
8#
发表于 2015-3-17 08:59:18 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
透明 该用户已被删除
9#
发表于 2015-3-24 04:52:18 | 只看该作者
从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-6 16:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表