如何创建无法访问数据的Web应用程序?

End*_*ssa 8 database security encryption

前提:即将开展的项目的要求包括除了授权用户之外没有人可以访问某些数据.这通常很好,但这种情况并不常见.这些要求规定,即使程序员或任何其他IT员工也无法访问此信息.(他们希望我存储它而不能看到它.)

在我提出的所有场景中,我总能找到一种访问数据的方法.让我来介绍其中一些.

方案I:限制实时数据库上的表,以便只有SQL管理员可以直接访问它.
黑客1:我推出了一项更改,将数据发送到另一个表以供日后查看.此外,SQL管理员可以查看数据,这打破了要求.

方案II:加密数据,以便需要密码才能解密.该密码仅供用户知道.每次创建新记录时以及每次检索旧记录中的数据时都需要它.加密/解密将在JavaScript中发生,因此密码永远不会被发送到服务器,在那里它可以被记录或嗅探.
Hack II:推出一个更改,记录javascript中的按键并将它们发回服务器,以便我可以检索密码.或者,推出一个简单地将未加密数据存储在隐藏字段中的更改,该字段可以发布到服务器以供以后查看.

场景III:与场景II相同,除了加密/解密发生在我们无法控制的网站上.这个神奇的网站将允许用户输入密码和加密或纯文本数据,然后使用javascript来解密或加密该数据.然后,用户可以只复制加密文本并将其放入字段中以获取新记录.他们还必须使用此站点查看旧记录的纯文本.
Hack III:除了在他们的系统上安装一个完整的密钥记录器,我不知道如何打破这个.

因此,场景III看起来很有前途,但对用户来说这很麻烦.还有其他可能性我可以忽略吗?

Lou*_*nco 11

如果您可以在页面上使用javascript,那么我认为您无法做任何事情.如果您可以在浏览器中看到它,那么这意味着它在DOM中,这意味着您可以编写脚本来获取它并在解密后将其发送给您.

这些问题通常不是通过控制来解决的:

  1. 所有程序员都需要一定程度的许可和背景调查
  2. 他们接受过培训,了解推出用于访问数据的代码是一种可以攻击或更糟糕的攻击
  3. 某些领域的每一次变化都需要某种签收

例如 - 没有签收的页面上没有JavaScript.

如果你被允许添加你想要的任何代码,那么总有一种方法,IMO.