我正在构建一个Web应用程序,并希望确保以正确的方式加密用户数据。
这些数据不是高度敏感的(如医疗记录或CC号码),但我认为它应该安全存储 - 只需简单地命名,公司,职位,电话号码,电子邮件地址。和密码当然 - 但这将使用哈希/盐... ...
我希望安全地存储用户数据,以防止被黑客入侵/服务器遭到入侵。但我还需要网站管理员可以看到客户名称,组织,电话号码和电子邮件地址 - 即在后端可见。
当然,网站管理员无法看到密码......
我希望得到一些关于我应该怎么做的建议 - 我希望做得足够“合理”安全而不会过分 - 就像我说数据不是非常敏感而且网站本身不是任何人都会不好意思成为...的成员。
非常感谢。答案 0 :(得分:0)
散列是计算数据的不可逆(或几乎不可逆)单向函数的过程。所以你可能会加密。
对于此上下文中的应用程序级加密,您可以执行此操作,但它只能防止转储原始数据库并读取它的人。要提供管理视图的功能,您必须使用一个密钥加密所有内容。并且在你的webapp中动态解密它,值得指出的是,如果你的应用程序对于SQL注入是有趣的,这可能意味着尽管有加密,但是有人能够提取数据。 Becaouse你的应用程序可能会解密它认为这是合法数据流的一部分。
加密数据会引入另一个问题,即缩小选择哪些字段?你必须在传递之前加密params。但是你必须使用相同的IV来匹配字段值。但是为了使用有效的IV,你必须知道db中的确切记录,从中提取InitializationVector。正如我所说,这可能很棘手。
我个人认为加密是最后的手段,只有在绝对必要时才应该使用。在解决机密性问题时,它引入了一个可能更大的关键管理问题。而且我认为这是你的情况。