Security 在客户端安全存储敏感数据

Security 在客户端安全存储敏感数据,security,cookies,encryption,data-storage,bcrypt,Security,Cookies,Encryption,Data Storage,Bcrypt,背景故事 我在一家中小型公司工作,我们正在改造面向客户的会计门户网站,我的经理希望使用最终用户计算机上存储在cookies中的信用卡信息来实现一键付款选项。我不喜欢这个主意。。。。(事实上,我仍在努力改变他的想法)。尽管如此,我正在尽可能地确保安全,但我认为我已经找到了一种将风险降至最低的方法,如下所示: 对所有交换机使用SSL 加密本地存储的大量cookie中的数据 将密码作为每次必须输入的确认密码。强制密码为强密码,比如说15+个混合字符,这可以通过在服务器上检查它的散列来确认 我知道主要的

背景故事 我在一家中小型公司工作,我们正在改造面向客户的会计门户网站,我的经理希望使用最终用户计算机上存储在cookies中的信用卡信息来实现一键付款选项。我不喜欢这个主意。。。。(事实上,我仍在努力改变他的想法)。尽管如此,我正在尽可能地确保安全,但我认为我已经找到了一种将风险降至最低的方法,如下所示:

对所有交换机使用SSL

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

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

问题 如何使用此基本方法进行改进

我知道会有很多事情要做,不要做!答案(如果我不是问,我会是其中之一)所以请具体一点,你是在向唱诗班宣讲这一点,所以在否定中要有建设性

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

多谢各位

对所有交换机使用SSL

无论您使用何种解决方案,只要涉及信用卡/支付信息,都应执行此操作。你可能知道

对本地存储的大量cookie中的数据进行加密 密码作为每次必须输入的确认密码。 强制密码为强密码,比如说15+个混合字符,这是 通过检查服务器上的哈希来确认

我通常记得我的信用卡号码,我宁愿把它放在里面(因为我已经打算不把它透露给任何人),也不愿把它放在一个长而复杂的钥匙里,大多数客户都会把它记在某个地方

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

什么原因使您不愿意存储此服务器端?这不像亚马逊把我的信用卡信息储存在饼干里。基本思想是将所有用户信息存储在服务器上,并在用户成功进行身份验证(即登录)后访问它

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

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

更多阅读:

编辑:我对这个问题读得越多,就越是目瞪口呆。你的经理知道什么是饼干吗?它是如何工作的?这有什么意义?说你想把信用卡信息储存在饼干里,就像说你想用鞋子来运输鞋带一样。他无缘无故地积极而有目的地朝自己的脚开枪。他想要实现的是,使用其他更安全的技术可以更轻松地实现,而不会损失任何功能

来自斯科特·汉斯曼的链接:

储存信用卡

如果你绝对必须存储信用卡数据,它应该以加密的形式存储

供应商应该遵循各种合规标准(特别是CSIP和PCI),这些标准描述了网络安全和数据存储的具体规则。这些规则相当复杂,需要非常昂贵的认证。然而,这些标准是如此严格和昂贵,以获得验证,这几乎是不可能的小企业遵守。虽然小型供应商不太可能被迫遵守,不遵守基本上免除了信用卡公司在出现欺诈或安全漏洞时的任何责任。换言之,你要对损失的全部程度负全部责任(实际上你无论如何都要负全部责任——我只是重复这些认证的粗略概念)


(我的重点是)

指出Cookies是通过每个请求传输的。如果你把信用卡信息存储在它们里面,不仅会降低安全性,而且实际上你也不会获得任何实际的时间效益。除了更容易实现之外,没有理由这样做。因为你是实现它的人,所以他无论如何都不应该关心实现的容易程度


编辑:你也可以指出,如果出了什么问题,他将因此被解雇。威胁他的工作是让他以你的方式看待它的一个很好的方式。

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

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


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

坏主意。。。。不要这样做……;)你为什么要这么做?您是否试图避免将信用卡信息存储在web服务器上以避免