原文:T-SQL问题解决集锦——数据加解密(2)

问题三、如何让指定用户可以对数据表进行Truncate操作?

Truncate在对大表全删除操作时,会明显比Delete语句更快更有效,但是因为它不需要存放日志,并且一定是全表删除,所以造成数据的不可恢复性。也说明了它的危险性。

但是,执行Truncate需要有表拥有者、系统管理员、db_owner、db_ddladmin这些里面的其中一种高权限角色才能执行。

对此,可以使用05之后的EXECUTE AS表达式来实现权限内容的切换:

1.      切换登录:EXECUTE AS LOGIN

2.      切换用户:EXECUTE AS USER

3.      切换执行权限:EXECUTE AS owner/’user name’,利用高用户权限来执行作业。此步骤可以在低权限实体下执行高权限操作,也能避免安全性漏洞。

另外,只有EXECUTE AS Caller可以跨数据库执行,而其他方式进行的权限切换仅限制于本数据库。

注意:执行EXECUTE AS USER模拟使用者切换时,需要先获得被模拟用户的授权。

可以使用REVERT来还原执行内容前的原始身份。

问题四、如何获取前端连接的信息,如IP地址和计算机名?

对于DBA工作或者某些特殊的应用程序,需要获取前端应用的系统信息。而这些信息如果用用户表来存储,代价会比直接读取数据库系统信息要大。所以建议适当读取系统表:

在连接数据库的session期间,都可以在master数据库中找到session信息,但是从05开始,有了很多DMV/DMF来实现这些功能:

l  Master.dbo.sysprocesses或者master.sys.sysprocesses:提供执行阶段的SPID、计算机名、应用程序名等。

l  Sys.dm_exec_sessions:记录每个session的基本信息,包括id、计算机名、程序名、应用程序名等

l  Sys.dm_exec_connections:记录每个连接到SQLServer实例的前端信息,包括网络位置、连接时间等等。

l  select
client_net_address 'Client IP Address',local_net_address'SQL ServerIP Address',*

l  from
sys.dm_exec_connections

l  wheresession_id=@@spid

在2005以后,建议使用DMV取代系统表。

问题五、如何避免SQL注入的攻击?

对于数据库应用程序,无论是那种DBMS,SQL注入都是一大隐患。

要避免SQL注入,应该最起码做到以下几点:

1.      检查输入的数据,应用程序不要相信用户输入的数据,必须经过检验后才能输入数据库。要排除%、--等特殊符号。

2.      避免果度暴露错误信息。建议可以转换成Windows事件或者是转换成应用程序内部错误信息。

3.      使用参数化查询或者存储过程

注意:

动态SQL是造成SQL注入的主凶

T-SQL问题解决集锦——数据加解密(2)的更多相关文章

  1. T-SQL问题解决集锦——数据加解密

    原文:T-SQL问题解决集锦--数据加解密 以下代码已经在SQLServer2008上的示例数据库测试通过 问题一:如何为数据进行加密与解密,避免使用者窃取机密数据? 对于一些敏感数据,如密码.卡号, ...

  2. shiro框架学习-6-Shiro内置的Filter过滤器及数据加解密

    1.  shiro的核心过滤器定义在枚举类DefaultFilter 中,一共有11个 ,配置哪个路径对应哪个拦截器进行处理 // // Source code recreated from a .c ...

  3. ASP.NET Core 6框架揭秘实例演示[19]:数据加解密与哈希

    数据保护(Data Protection)框架旨在解决数据在传输与持久化存储过程中的一致性(Integrity)和机密性(confidentiality)问题,前者用于检验接收到的数据是否经过篡改,后 ...

  4. 个人永久性免费-Excel催化剂功能第62波-单元格区域内数据加解密处理,最有效地保护数据方式

    Excel的数据保护能力有限,诸如之前提及过的工作表保护.工作薄保护等,都是十分微弱的保护措施,而对于强保护的工作薄打开密码来说,它像是个总开关一样,要么全不能看,要么就全看到.有这样的场景需求,一份 ...

  5. java基础/数据加解密(Mooc)

    一.消息摘要算法 常用摘要算法: 以下 (HEX)内容:bc指Bouncy Castle  |  cc指:Apache commons Codec 1.消息摘要算法MD5及MD族(MD2,MD4) 消 ...

  6. php利用自定义key,对数据加解密的方法

    客户端和服务端通信时,有个场景很常见,通过一个id作为url参数来回传递.假设现在业务上只有这个id标识,那么需要稍微安全一点的通信,对这个id进行加密传输,到服务端再进行解密.这里需要一个服务端进行 ...

  7. Java中使用OpenSSL生成的RSA公私钥进行数据加解密

    当前使用的是Linux系统,已经按装使用OpenSSL软件包, 一.使用OpenSSL来生成私钥和公钥 1.执行命令openssl version -a 验证机器上已经安装openssl 1 open ...

  8. Java中使用OpenSSL生成公钥私钥进行数据加解密

    当前使用的是Linux系统,已经安装OpenSSL软件包. 一.使用OpenSSL来生成私钥和公钥1.执行命令openssl version -a 验证机器上已经安装openssl $ openssl ...

  9. unity3d 数据加/解密

    [/font]using System.Collections; using System.Text; using System.Security.Cryptography; using System ...

随机推荐

  1. uvalive 2088 - Entropy(huffman编码)

    题目连接:2088 - Entropy 题目大意:给出一个字符串, 包括A~Z和_, 现在要根据字符出现的频率为他们进行编码,要求编码后字节最小, 然后输出字符均为8字节表示时的总字节数, 以及最小的 ...

  2. centos6搭建本地openstack软件源

    1.把相关软件包所有下载到本地机器 wget -np -nH –cut-dirs=1 -r -c -L –exclude-directories=repodata –accept=rpm,gz,xml ...

  3. embedded dylibs/frameworks are only supported on iOS 8.0 and later 错误解决

    ld: warning: embedded dylibs/frameworks only run on iOS 8 or later ld: embedded dylibs/frameworks ar ...

  4. ubuntu server编译安装nginx

    刚刚安装好了ubuntu server14.04,如今要安装一个webserver,纯静态就用nginx应用程序server吧,性能出众啊. 安装编译环境 我们这里採用源代码编译安装的方式,大家能够看 ...

  5. mysql替换字段里数据内容部分字符串(亦可用于增加字段中的内容)

    mysql替换表的字段里面内容,如例子: mysql> select host,user from user  where user='testuser'; +----------------- ...

  6. 简介支持向量机热门(认识SVM三位置)

    支持向量机通俗导论(理解SVM的三层境地) 作者:July .致谢:pluskid.白石.JerryLead.出处:结构之法算法之道blog. 前言 动笔写这个支持向量机(support vector ...

  7. 怎样获取android手机联系人并按字母展示(一)

    android提供了本地数据库的查询uri,能够查询出数据: 採用一个AsyncQueryHandler来进行查询, AsyncQueryHandler自己开启了线程来进行数据查询,非常方便 prot ...

  8. IOS设计模式学习(20)命令

    1 前言 在面向对象中,把指令封装在各种命令对象中.命令对象可以被传递而且在指定时刻被不同的客户端复用.这一概念精心设计而来的设计模式叫做命令(Command)模式. 2 详述 2.1 简述 命令对象 ...

  9. shell文字过滤程序(十):cut命令

    [版权声明:转载请保留源:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] cut指挥类似至awk,从行内提取的信息,它是一个较弱的版本的功能 ...

  10. 什么是“Bash”破绽?

    摘要:近来的linux系统出现"Bash"漏洞可以被认为是第一个互联网造成安全讨论和思考.错的资料. 什么是"Bash"漏洞?它是怎样工作的?它是否可以成为新的 ...