vb.net - 如何最好地加密/解密 SQL Server 数据以防止开发人员看到它?

标签 vb.net sql-server-2008 encryption design-patterns obfuscation

这是一个有趣的问题,我正在寻找一种模式来使其一切可行。

我正在为学校系统构建一个智能客户端应用程序。它将包含有关学生的信息,包括他们的成绩单、病假等等。它将生成学生级别的报告,包括他们的成绩单,每份报告都包含老师的非常个人化的评论。该应用程序将通过网络服务从远程服务器检索数据。

所以数据是相当 secret 的。我将在数据库中对其进行加密,并在检索时对其进行解密 - 没有问题。

问题是我和我的团队真的不应该看到生产明文数据。然后出现了一个有趣的问题来调查生产错误!我们希望打开与用户相同的记录以查看他们所看到的内容。但如果我们这样做,我们就违反了保密规定。

我的想法是这样的,而且并不完美。

  • 首先,在存储到数据库之前对数据进行加密,然后在 UI 上对其进行解密。没有什么新鲜事。
  • 其次,在用户界面中设置一种机制来混淆特权数据。 (即,姓名和教师叙述是有特权的;年级不是。)我不会加密它,但会混淆它 - 即使一个简单的 key 转换就足够了。原因是这些报告充满了文字。如果我加密一个段落并在报告中显示结果,它将是一堵由大写字符组成的实心墙,看起来与原始文本完全不同。如果我对字母字符进行按键转换,它将无法阅读,但看起来仍然像段落、句子、项目符号列表等。可以更轻松地看出问题出在哪里,而不会增加视觉上的复杂性。
  • 第三,我设置了一个配置设置,仅针对系统管理员角色(而不是教师或学校管理员)的成员执行此 UI 混淆。在开发过程中,我将此配置设置为False,我们针对假明文进行开发。对于生产,我们将其设置为 True,从那时起,我们只能看到模糊的文本。

最后,对于我们绝对必须查看学生记录的明文的情况,我们在 UI 中有一个覆盖设置,可以取消配置设置并显示明文。我们在人性层面上进行管理——通知学校管理部门,在这个日期,出于这个原因,我们需要查看这个学生的记录,等等。签署了签字,给出了提示的同意,律师被赶到他们的喷气式飞机上,冲洗并重复。

想法?我觉得这一定是老生常谈的地方。如果可能的话,请帮助我改进这个计划。

最佳答案

我们的团队遇到过类似的问题,因此我们必须使用大量的模拟数据存储。生产始终是猜测工作。没有人被允许知道任何密码。

编辑

如果您想完全安全,您可以允许外部公司处理数据,这使他们能够保护数据并保证在发生错误时您不会被起诉。只是我的 .02

关于vb.net - 如何最好地加密/解密 SQL Server 数据以防止开发人员看到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2351698/

相关文章:

java - 通过 TCP 发送大字符串时丢失数据。 (客户端服务器)

C# 等效于 VB 6 DoEvents

sql - 基于条件使用 Case When 选择列 - SQL Server

c# - SqlMembershipProvider : use my own database as user store database

security - 安全地存储访问 token

asp.net - 使用 ASP.NET 异步上传文件

c# - 在 .NET 中运行具有重定向文件路径的进程

sql - 在 MSSQL 中将每个数值增加 15%

iphone - iPhone 上 SQLite 数据库的光保护

android - 代理 SSL 流量时,Charles 代理如何工作?