积极答复者
数据库中字段加密的问题?

问题
-
表tbl
id int 标识列、PK
loginName nvarchar(16) 登录名
pwd nvarchar(20) 密码
birth datetime 生日
age smallint 年龄
phone nchar(11) 手机
……剩下的为非保密项,不列出来。
现在设置了如下两种角色:公司高管、普通员工。
因为涉及个人隐私,要求不可以直接或间接的查看到其他人的保密信息。直接的就是在网页上看到,这个技术人员可以限制,间接的就是不可以让技术人员通过解密的方式获取真实的信息,当然本人在后台管理里是可以看到自己的的保密和非保密信息,公司高管可以查看所有人的保密和非保密信息。
说明:技术人员用测试数据开发完后,使用该系统的身份仍是普通员工。最初的想法是通过DES加密后,存到数据库里,然后后台显示的时候,解密显示出来。
这个方式有2个问题:1.技术人员可以解密知道。2.不方便查询,pwd不要紧,但是birth,age,phone不好模糊查询。例如:公司高管要统计每月过生日的员工、统计各年龄段的员工、统计139号码的员工等。不知各位达人们有什么更好的建议吗?
- 已移动 Sheng Jiang 蒋晟 2010年6月30日 19:57 非System.Web (发件人:ASP.NET 与 AJAX)
答案
-
不能纯粹通过加密来解决问题.
1. 技术人员能够解密这个是没错, 但为什么你要让他有接触产品环境数据的权限? 应该吸能碰开发环境才对. 而管理数据的人员, 要接触数据, 他就不应该接触加解密的代码.
2. 查询统计不方便, 还是和前面一样, 你把权限控制好了, 有些数据就没有必要加密存储. 核心的数据要加密, 那不方便统计查询, 也是要接受的, 而且这个也不会是大量数据.
- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年7月5日 5:55
-
建立id int 标识列可访问加密数据表,写个SP以ID和加密后的密码为参数处理,合法的ID和密码能读取数据,不合法拒绝,其ID的密码为不可还原的加密方式
这样技术人员没有合法ID和密码,一样不能读取数据
控制好这个可访问加密数据表权限、表Tbl 即可
SP就可赋予所有人执行
Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年7月5日 5:55
全部回复
-
不能纯粹通过加密来解决问题.
1. 技术人员能够解密这个是没错, 但为什么你要让他有接触产品环境数据的权限? 应该吸能碰开发环境才对. 而管理数据的人员, 要接触数据, 他就不应该接触加解密的代码.
2. 查询统计不方便, 还是和前面一样, 你把权限控制好了, 有些数据就没有必要加密存储. 核心的数据要加密, 那不方便统计查询, 也是要接受的, 而且这个也不会是大量数据.
- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年7月5日 5:55
-
建立id int 标识列可访问加密数据表,写个SP以ID和加密后的密码为参数处理,合法的ID和密码能读取数据,不合法拒绝,其ID的密码为不可还原的加密方式
这样技术人员没有合法ID和密码,一样不能读取数据
控制好这个可访问加密数据表权限、表Tbl 即可
SP就可赋予所有人执行
Try SQL Server 2008 QQ:315054403 dgdba@hotmail.com- 已标记为答案 Nai-dong Jin - MSFTModerator 2010年7月5日 5:55