安全存储敏感数据客户端

时间:2012-08-01 13:42:37

标签: security cookies encryption data-storage bcrypt

返回故事 我在一家中小型公司工作,我们正在重新设计面向客户的会计门户网站,我的经理希望通过最终用户计算机上存储在Cookie中的信用卡信息进行单击支付选项。我根本没有爱这个想法......实际上我还在努力改变主意。话虽如此,我试图让它尽可能安全,我想我有办法把风险降到最低,这就是:

为所有交易所使用SSL

加密本地存储的许多cookie中的数据 将密码作为必须每次输入的确认密码。强迫密码变强,比如15个混合字符,这可以通过检查服务器上的散列来确认。

我知道主要的弱点是以双向加密方式存储的cookie信息,据说这是一种存储信息的合理安全方式....

问题 如何使用这种基本方法进行改进。

我知道会有很多不要做它!答案(如果我没有问,我会是其中之一)所以请具体说说,你正在向合唱团讲道,所以在消极方面要有建设性。

修改 - 如果您有一个特定的观点,您认为我可以在与我的经理推理时使用,请分享。 (我已经提出,如果CC信息是从cookie中偷来的话,我们可能会有法律责任,他说他会让律师看一下)

谢谢。

3 个答案:

答案 0 :(得分:1)

  

为所有交易所使用SSL

无论您使用何种解决方案,只要涉及信用卡/付款信息,都应该这样做。你可能知道。

  

加密本地存储的许多cookie中的数据   密码作为每次必须输入的确认密码。   强迫密码变强,比如15个混合字符,这就是   通过检查服务器上的哈希来确认。

我通常记得我的信用卡号码,而且我宁愿把它放进去(因为我已经打算不向任何人透露它),而不是大多数客户在某处写下的冗长而复杂的密钥。

即使我们不被允许说“不要这样做!” - 你为什么不问我们劝阻你的经理做出这个决定的好方法? ; - )

是什么让你不愿意存储这个服务器端?这不像亚马逊将我的信用卡信息存储在cookie中。基本思想是在服务器上存储所有用户信息,并在用户成功验证(即登录)后访问它。

在这种情况下,Cookie用于在浏览器会话之间保留登录 -state。此登录 -session有权访问的信息存储在服务器上。使用信用卡信息,这通常比其他敏感信息更安全,但它是基本相同的想法。

当一些精通技术的客户意识到你在做什么时,将实际的信用卡号码存储在cookie中(加密或不加密)可能是一个潜在的公关噩梦。

更多阅读线程:What information is OK to store in cookies?

编辑:我通过这个问题阅读得越多,我就越傻眼。您的经理是否知道饼干是什么?这个怎么运作?它的重点是什么?说你想在cookie中存储信用卡信息就像是说你想用鞋子作为运输鞋带的方法。 他积极而有目的地毫无理由地在脚下射击自己。他想要实现的目标可以通过其他更安全的技术轻松实现 - 不会有任何功能损失。

来自Scott Hanselman联系的article

  

存储信用卡

     

如果您绝对必须存储信用卡数据,则应以加密形式存储。

     

供应商应遵循各种合规标准(特别是CSIP和PCI),描述网络需要如何保护和存储数据的具体规则。这些规则相当复杂,需要非常昂贵的认证。但是,这些标准非常严格且昂贵,无法通过验证,小型企业几乎不可能遵守这些标准。虽然较小的供应商不太可能被迫遵守,但不遵守本质上会使信用卡公司承担任何责任,如果存在欺诈或安全漏洞。换句话说,你对损害的全部程度负有全部责任(实际上你是反正的 - 我只是回应了这些认证的粗略概念)。

(我的重点)

答案 1 :(得分:1)

指出Cookie是通过每个请求传输的。如果您将信用卡信息存储在其中,不仅不太安全,而且您实际上并没有获得任何实际的时间收益。除了更容易实现之外,没有理由这样做。既然你是实施它的人,他就不应该关心实施的简易性......

编辑:您还可以指出,如果出现任何问题,他将成为被解雇的人。威胁他的工作是让他以自己的方式去看待它的好方法。

答案 2 :(得分:0)

不要使用用户的密码作为密钥,或者至少,它不应该是构成密钥的唯一东西。您应该使用存储在服务器上的私钥(而不是用户已知的)加密信用卡帐户信息。

您可以解密服务器上的信用卡信息,即使它存储在客户端上也是如此。这样,加密的信用卡信息就无法在客户端上反转(不知道私钥)。

您可以使用私钥和用户输入的密码加密信用卡帐户信息,这样,如果没有正确的密码,就无法将它们发送到服务器进行解密。