我正在为一个学校系统构建智能客户端应用程序。它将包含有关学生的信息,包括他们的报告卡、病假等等。它将生成学生级别的报告,包括他们的报告卡,每个报告都有老师的非常个人化的评论。该应用程序将通过Web服务从远程服务器检索数据。
因此,数据相当机密。我将在数据库中对其进行加密,并在检索时解密-没有问题。
问题是,我和我的团队应该真正永远不会看到生产纯文本数据。这就出现了一个有趣的问题,用于调查生产错误!我们想要打开与用户相同的记录,以查看他们所看到的内容。但如果我们这样做,就违反了保密性。
我的想法是这样的,它并不完美。
第一,在存储在数据库中之前加密数据,在UI上解密它。没有什么新鲜的东西。
第二,在UI中放置一个机制来混淆特权数据。(即,姓名和教师叙述是特权的;年级不是。)我不会加密它,而是混淆它-即使是简单的键移位也足够了。原因是,这些报告充满了文本。如果我加密一个段落并在报告中显示结果,那么它将成为一堵大写字符的固定墙,看起来与原始文本毫不相似。如果我对字母字符进行键移位,它将是难以阅读的,但仍然看起来像段落、句子、项目列表等。这样做将更容易看出哪里出了问题,而不会增加视觉复杂性。
第三,在配置设置中放置此UI混淆,仅适用于例如SysAdmin角色的成员,而不适用于教师或SchoolAdmin。在开发过程中,我将此配置设置为False,并使用虚假纯文本进行开发。对于生产,我们将其设置为True,从那时起,我们只能看到混淆的文本。
最后,对于那些绝对必须看到学生记录的纯文本的情况,我们在UI中具有覆盖设置,可以推翻配置设置,并呈现纯文本。我们在人类层面上管理这个-通知学校行政当局,在这个日期和这个原因下,我们需要看到这个学生的记录等等。签名被签署,同意被得到,律师们正在争吵中,反复洗涤。
您认为怎么样?我觉得这一定是经过深思熟虑的。如果可能,请帮助我改进这个计划。