2

背景故事 我在一家中小型公司工作,我们正在改造面向客户的会计门户,我的经理想要使用存储在最终用户计算机上的 cookie 中的信用卡信息进行单击支付选项。我一点也不喜欢这个主意……(事实上我还在努力改变他的想法)。话虽如此,我正在努力使其尽可能安全,我想我有办法将风险降到最低,这里是:

使用 SSL 进行所有交换

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

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

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

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

编辑- 如果您认为我可以在与我的经理推理时使用特定的观点,请分享。(我已经提出,如果抄送信息从 cookie 中被盗,我们可能会承担法律责任,他说他会让律师检查一下)

谢谢你。

4

3 回答 3

1

使用 SSL 进行所有交换

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

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

我通常会记住我的信用卡号,我宁愿把它放进去(因为我已经打算不向任何人透露它)而不是大多数客户无论如何都会写在某个地方的长而复杂的钥匙。

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

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

在这种情况下,Cookie 用于在浏览器会话之间保持登录状态。登录-session 有权访问的信息存储在服务器上。对于信用卡信息,这通常比其他敏感信息需要更多的安全性,但这是相同的基本思想。

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

更多阅读主题:哪些信息可以存储在 cookie 中?

编辑:我越读这个问题,我就越傻眼。你的经理甚至知道 cookie 是什么吗?这个怎么运作?它有什么意义?说你想在 cookie 中存储信用卡信息就像说你想用鞋子作为运输鞋带的一种方式。他无缘无故地积极而有目的地射击自己的脚。他想要实现的目标可以通过其他更安全的技术更轻松地实现——而不会损失任何功能。

来自Scott Hanselman 链接的一篇文章:

存储信用卡

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

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

(我的重点)

于 2012-08-01T13:48:19.713 回答
1

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

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

于 2012-08-01T14:29:21.327 回答
0

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

您可以在服务器上解密信用卡信息,即使它存储在客户端上。这样一来,加密的信用卡信息就无法在客户端(在不知道私钥的情况下)进行反转。

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

于 2012-08-01T19:12:47.163 回答