存在哪些机制(如果有)来保护 Web 应用程序的用户隐私和数据?我问是因为我想自己创建一个,并且想知道是否有任何方法可以保证我的用户的隐私,超出我的承诺,我不会在数据库中查看。我想大公司有复杂的程序和锁定数据的方法,但是一个人或一家小型初创公司是如何做到的呢?
我打算使用 Google App Engine。我提到它以防万一可以提供解决方案。
澄清一下,我对我可以用来保护数据免受第三方访问的安全措施的要求较少,而更多关于我可以用来保证用户对我自己/其他服务器管理员的隐私的措施。
存在哪些机制(如果有)来保护 Web 应用程序的用户隐私和数据?我问是因为我想自己创建一个,并且想知道是否有任何方法可以保证我的用户的隐私,超出我的承诺,我不会在数据库中查看。我想大公司有复杂的程序和锁定数据的方法,但是一个人或一家小型初创公司是如何做到的呢?
我打算使用 Google App Engine。我提到它以防万一可以提供解决方案。
澄清一下,我对我可以用来保护数据免受第三方访问的安全措施的要求较少,而更多关于我可以用来保证用户对我自己/其他服务器管理员的隐私的措施。
据我所见,主要是通过使用法律服务条款,用户与服务或公司签订具有法律约束力的协议,以设置他们将使用和不使用其数据的方式。
另一件事是,对于某些事情,如信用卡处理等,存在使用标准,例如拥有一个可以审计访问的系统(即,它跟踪对文件的每次访问、修改以及是谁做的)。此外,敏感/机密数据通常保存在与公共服务器不同的服务器上,这样来自外部的人就不会直接接触服务器,而必须通过中间服务器。此外,从物理上讲,大多数服务器机房都处于锁定状态。许多地方都有一个键盘,可以记录进入房间的密码。
此外,请确保加密敏感/私人数据。您可以设置一个系统,其中使用基于用户密码或其他东西的哈希值的盐字符串加密私人数据(当然,如果他们更改了密码,则需要您解密并重新加密他们的数据)。这样,即使您随便查看数据库也不会看到他们的数据。现在,这仅适用于数据存储情况,因为很多时候他们会为您提供信息,以便您可以使用它。不过,密码应该总是被散列。永远不要把它们放在明文中。
商业系统上的信用卡号码是使用经常更改的盐字符串进行哈希处理的。该字符串只是存储在某处的同一台服务器上(至少它在我见过的系统上......其他较大的商业系统可能更好地保护它),但对服务器的访问非常有限。需要知道信用卡信息的程序可以向该服务器进行身份验证,服务器将使用其哈希字符串来解密这些数字。
有两种基本工具:加密和散列。
Encryptiong 有两种形式: 对称,其中相同的密钥用于加密和解密。
PKI,你有两个密钥,你用一个加密的东西可以用另一个解密,反之亦然。
散列将一些数据转换为或多或少唯一的数字或字符串,而没有可行的返回方式。
根据您实际想要保护的内容,您可以使用这些工具来获得几乎任何您需要的东西。
示例:密码存储为哈希值。要检查密码,请再次将其转换并与哈希值进行比较 => 作为应用程序提供的您没有密码。
您让应用程序为每个用户创建一个密钥,并使用该密钥对您想要保护的所有内容进行加密。挑战在于,现在用户必须将该密钥保密并受到保护,而这是用户不太擅长的。同样搜索这种加密数据肯定会很慢。
私有数据的最大风险可能是针对您的应用程序的黑客攻击。花一些时间在OWASP上了解最重要的攻击以及如何对抗它们。
我能想到四种技术。
使用一些像 rot13 这样的简单函数加密数据。这可以防止意外读取机密数据,但仅此而已。
加密敏感数据。将数据和加密密钥分开 - 如果可以的话,安排它,以便使用密钥管理服务器的人与使用数据管理服务器的人不同。
仅限需要的人访问敏感信息。将数据分割成单独的分区,并使不同的分区可供各方访问。例如,您可以将一个人的病史存储在一个数据库中,其中不存储他们的实际姓名,但记录由某个标识符标识,而实际姓名则存储在另一个具有相同标识符的数据库中。一个人需要访问这两个数据库才能将历史与人联系起来。当然,这两个部分都需要在某个时候结合起来,并且需要有人管理发生这种情况的系统。
(这是通常的公司策略)通过政策和合同加强对客户信息的保护。让员工了解机密信息的价值以及不保护它的后果。您可以让员工因违反公司政策而承担法律责任。我不是律师。