
Encrypt data from users in web applications某些Web应用程序(例如Google Docs)存储用户生成的数据。只能由其所有者读取的数据。也许不是? 据我所知,此数据按原样存储在远程数据库中。因此,如果任何在远程系统中具有足够特权的人(例如sysadmin)都可以潜伏我的数据,那么我的隐私可能会受到损害。 将加密的数据存储在远程数据库中并且只有数据的所有者才能解密的最佳解决方案是什么?如何使该过程对用户透明? (您不能使用用户的密码作为加密用户数据的密钥,因为您不应该知道用户的密码)。 如果在服务器上执行加密/解密,则无法确保明文未转储到某些日志文件等中的某处。 您需要使用JavaScript / Java / ActiveX或其他方法在浏览器中进行加密/解密。作为用户,您需要信任Web服务的客户端,不要将未加密的信息发送回服务器。 卡尔 我认为卡尔是把它钉在了头上,但是我想说的是,对于任何网站,如果您向其提供任何机密/个人/特权信息,那么您必须具有一定的信任度,这就是服务提供商建立这种信任的责任。自从它问世以来,这是在互联网上被问过很多次的问题之一,并且它将一直持续增长,直到我们在指纹上都编码了我们自己的SSL证书为止,即使如此,我们也必须问一个问题"'我怎么知道手指仍然附着在用户身上?\\'。
好吧,密钥通常来自用户选择的某些密码。您不存储它,而是相信用户可以记住它。您可以存储的内容可能是与该用户相关的一些salt值,例如,可以提高针对彩虹表攻击的安全性。 很难正确地使用密码;-)我建议您查看AxCrypt和Xecrets的脱机客户端的源代码。 卡尔 好吧,我会考虑一个类似于亚马逊AWS的流程。您使用不会远程保存的专用密码进行身份验证。仅使用散列来验证用户。然后,使用主要算法和经过长期测试的算法之一生成证书,并从安全页面提供该证书。然后,可以使用公钥/私钥算法为用户加密事物。 但是主要问题仍然是:如果具有足够特权的人可以访问数据(例如:服务器被黑客入侵),您将会迷路。只要有足够的时间和力量,一切都可能被破坏。这只是时间问题。 但是我认为算法和应用程序(例如GPG / PGP等)是众所周知的,可以以确保Web应用程序安全的方式实施-并将可用性保持在普通用户可以处理的水平。 edit我想跟上@Carl和Unkwntech并添加他们的声明:如果您不信任网站本身,请不要泄露私人数据。甚至在有人入侵服务器之前...;-) 不,您不能使用密码,但是可以使用密码哈希。但是,Google Docs都是关于共享的,因此这种方法将需要为每个用户存储文档的副本。 |