首页 / 知识
SQL Server 2005加密,asp.net和存储过程
2023-04-15 04:23:00

SQL Server 2005 Encryption, asp.net and stored procedures我需要使用SQL Server 2005,asp.net和ado.net编写Web应用程序。存储在此应用程序中的许多用户数据必须进行加密(读取HIPAA)。 过去,对于需要加密的项目,我在应用程序代码中进行了加密/解密。但是,这通常是用于加密密码或信用卡信息,因此,几个表中只有少数几列。对于此应用程序,需要加密多个表中更多的列,因此我怀疑将加密职责推入数据层会更好地执行,特别是考虑到SQL Server 2005对多种加密类型的本机支持。 (否则,如果有人有真实的经验证据,我可以说服我。) 我已经咨询了BOL,并且我相当精通使用Google。因此,我不希望链接到在线文章或MSDN文档(可能我已经阅读过)。 到目前为止,我束手无策的一种方法是使用使用证书打开的对称密钥。 因此,一次设置步骤是(理论上由DBA执行): 然后,只要存储过程(或通过Management Studio的人类用户)需要访问加密的数据,就必须首先打开对称密钥,执行任何tsql语句或批处理,然后关闭对称密钥。 那么就asp.net应用程序而言,就我的应用程序代码的数据访问层而言,数据加密是完全透明的。 所以我的问题是: 我是否要打开,执行tsql语句/批处理,然后关闭所有sproc中的对称密钥?我看到的危险是,如果tsql执行出现问题,并且代码sproc执行从未到达关闭键的语句,该怎么办。我认为这意味着该键将保持打开状态,直到sql杀死在其上执行sproc的SPID。 我是否应该考虑对需要执行的任何给定过程进行三个数据库调用(仅在需要加密时)?一个数据库调用打开密钥,第二个调用执行存储过程,第三个调用关闭密钥。 (每个调用都包装在自己的try catch循环中,以最大程度地提高打开键最终关闭的几率。) 我需要使用客户端事务进行任何考虑(这意味着我的代码是客户端,并启动一个事务,执行多个sproc,然后在成功的情况下提交该事务)? 1)考虑在SQL 2005中使用TRY..CATCH。不幸的是,这并没有最终完成,因此您必须分别处理成功和错误情况。 2)如果(1)处理清理,则没有必要。 3)使用SQL Server的客户端和服务器事务之间并没有真正的区别。 Connection.BeginTransaction()或多或少在服务器上执行" BEGIN TRANSACTION"(和System.Transactions / TransactionScope相同,直到被提升为分布式事务)。至于在事务中多次打开/关闭密钥的问题,我不知道有什么要注意的问题。 我是选项3的忠实粉丝。 假一分钟,您将在以下任何地方建立事务基础结构: 一旦创建了这种类型的交易,则很容易在开始时(当交易打开时)固定打开键,并在结束时(就在交易结束之前)关闭键。对数据存储进行"调用"并没有打开数据库连接那么昂贵。确实是像SQLConnection.Open()这样的东西会刻录资源(即使ADO.NET为您池化了它们)。 如果您想获得这些类型的代码的示例,可以考虑使用NetTiers。对于我们刚刚描述的交易,它有一个非常优雅的解决方案(假设您尚未想到某些东西)。 只需2美分。祝好运。 您可以使用@@ error来查看在调用SQL中的sproc期间是否发生任何错误。 不复杂。 您可以但我更喜欢在SQL Server本身中使用事务。 |
最新内容
相关内容
linux加密压缩命令?
linux加密压缩命令?,系统,网络,基础,管理,基础知识,积极,发展,下来,材料,电脑,linux基础知识有哪些1、Linux基础知识:了解Linux操作系统的基本linux命令大全数据库?
linux命令大全数据库?,服务,系统,平台,状态,软件,通用,环境,数据,神州,地址,在Linux上用命令怎么连接数据库(linux连接oracle数据库命令)登录linux上数据库的命令?
linux上数据库的命令?,服务,系统,信息,地址,命令,密码,工具,管理,数据,单位,在Linux上用命令怎么连接数据库(linux连接oracle数据库命令)1、登linux命令dm数据库?
linux命令dm数据库?,地址,软件,时间,设备,名字,服务,位置,名称,公司,命令,linux创建dm数据库超时linux/sys下无法新建 方法如下打开c盘,在用户linux命令读取前十个?
linux命令读取前十个?,时间,系统,最新,文件,名称,标准,密码,工作,适当,信息,linux写脚本,需要ls只显示前10个文件,怎么实现?在linux中如果用lslinux读取码值命令?
linux读取码值命令?,系统,工作,地址,证书,命令,工具,档案,文件,设计,信息,基本linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目linux存储数据命令?
linux存储数据命令?,系统,管理,数据,设备,情况,地址,工作,命令,服务,平台,Linux文件系统操作命令1、cat:可以显示文件的内容(经常和more搭配使linux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许linux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令linux建立数据库命令?
linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服务,linux中在shell中怎么创建一个数据库1、以下的文章主要讲述的是linux命令进数据库?
linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,主机,linux系统mysql数据库怎么进入数据库首先确保linux下mysql安linux清空表数据命令?
linux清空表数据命令?,系统,数据,软件,名称,不了,命令,文件,电脑,地址,位置,Linux删除文件的命令?1、linux 删除文件指令:输入rd盘符名:\文件夹