php - 如何合乎道德的进行纯文本存储用户密码以便以后取回?

  显示原文与译文双语对照的内容

就像我继续去构建越来越多的网站和网络应用程序,让它们能够中经常有人问我来存储密码的用户可以检索如果/当用户有一个问题当我可以,我根据这个习惯和我做了大量打斗 bitterly ( 要发送忘记的密码链接,请通过电话,等等 )'额外的'的编程,这使得密码重置和管理员协助的情况下可能不需要存储它们的实际密码。

然后我不能战斗时它( 或者无法获胜) 我总是以某种方式对密码进行编码,使它的至少没有存储为明文在database—though我意识到如果我的DB作为well—so受到黑客攻击的罪魁祸首的又一举措,它不会占用太多的密码,使我不舒服。

在一个完美的世界各位必须经常更新口令,而不是套用他们从很多不同sites—unfortunately我保守,很多人都有相同的work/home/email/bank 密码,然后竟然还可以免费对我来说,当他们需要帮助。 如果我的数据库安全过程因某种原因失败,我不想成为他们的负责人。

则更少respect,道德标准和ethically我觉得负责保护什么都可以,对于某些用户来说,他们的民生,即使他们正在将管它, 我确信有很多方法可以用来处理散列哈希和不同的编码选项,但是当你必须存储它们时,还有一个'最佳实践'? 在几乎所有情况下,我都使用PHP和 MySQL,如果这对我处理细节的方式有什么不同。

于Bounty相关, 附加信息

我想澄清,我知道这不是你想要做的事情,而且大多数情况下拒绝这样做是最好的。 我,然而,不是在寻找一个讲座采用这里方法的基础数据的来源我要寻找最好的需要采取的步骤如果你也采用这种方法。

在下面的注释中我做了时间,以至于网站适合那些很大程度上朝向程度增加,副阿甘,还是很年轻可能会造成混乱,是人们在它们被要求执行一个安全的密码恢复例程。 虽然我们可能会发现它变得简单和平凡在这些情况下某些用户需要这些额外的帮助下,可以算不了服务的科技帮助他们到系统中,或者让它直接向他们发送电子邮件/显示。

位于应用程序的流失率从这些人口统计学变量上可以 hobble mind,在这样的系统上如果用户是没有得到这样的访问级别帮助,所以请回答有了这样一个安装程序。

感谢大家的

这是个有趣的问题,有很多争论,我也乐在其中。 而迅速地区分正常密码recovery,最后,我选择一个答案,因为两者都保留着( 我不需要保留纯文本或者可以恢复的密码) 密码安全,还可以变换为指定的用户基础我登录进这个系统,而不需要重大的缺陷我已经找到想要

总是有 5个答案,我想用不同的理由标记正确,但是我必须选择最好的one--all,其余的是 +1. 感谢大家 !

同时,由于有社区谁投票通过堆栈中的每个人都为这个问题和/或者将其标为收藏。 我had,我花费最多命中 100投票,把这当成是用相同的关注,并希望这种讨论已经帮助别人别的。

时间:

在这个问题上采取另一种方法或者角度如何? 问为什么密码需要明文: 如果是,这样用户可以检索他们设定的密码,然后严格地说你并不真正需要检索密码( 他们不记得是什么了) 密码,你需要能够给他们一个他们可以使用 。

想想:如果用户需要找回密码,那是因为他们忘记了密码。 在这种情况下,新密码与旧密码一样好。 但是,今天使用的常见密码重置机制的缺点是,在复位操作中生成的密码通常是一堆随机字符,所以用户很难简单地输入它们,除非它们是正确的。 对于不太熟练的计算机用户来说这可能是个问题。

解决这个问题的一种方法是提供更多或者更少自然语言文本的auto-generated密码。 虽然自然语言字符串可能没有相同长度的随机字符的熵,但没有任何证据表明你的auto-generated密码只需要 8个( 或者 10或者 12 ) 字符。 得到一个 high-entropy auto-generated密码短语由几个随机单词( 它们之间要留一个空格,因此这些数据仍然识别,并且typeable的任何人都可以读取) 。连成字符串 6 个随机单词可变长度的随机字符组成,而且它们都比 10更易于输入是否正确,然后,用信心的也可以有更高的熵。 例如一个 10字符密码中随机抽取的熵,大写,小写,数字和( 总共有 72个有效符号) 10标点符号会有一个熵的61.7碎片。 使用 7776个单词( Diceware使用)的字典,它可以随机选择六个单词短语,密码短语将有 77.4位的熵。 有关更多信息,请参阅 Diceware FAQ

  • 带有 77位熵的密码短语: admit承认散文耀斑表 acute"

  • 带 74位熵的密码: "k: & $R^tt~qkD"

我知道我宁愿输入短语,而且使用 copy-n-paste,这个短语也不会那么容易使用,所以不会有损失。 当然,如果你的网站( 或者不管受保护的资产是什么) 不需要 77位的auto-generated密码,那么生成更少的单词( 我相信你的用户会喜欢) 。

我理解有密码保护的资产,这些资产实际上没有高度的价值,所以破解密码可能不是世界末日。 例如我可能不会关心在不同网站上使用的80%个密码是否被破坏: 于一个while,所有相关,它会发生在我的name.下是一个有人滥发或者过帐 这并不是很好,但他们不像是闯进我的银行账户。 然而,鉴于他们的论坛站点,因为它们做为他们的银行账户( 可能是国家安全数据库)的,很多人都使用相同的密码,甚至我自己,最好能再处理那些'low-value'密码作为 non-recoverable 。

想象有人委托了一个大型建筑建造- 一个酒吧,让我们说- 和以下对话:

架构师: 申请建筑这样大小的量少,你将需要安全出口在这里,这里和这里。
客户: 不那是太过复杂和昂贵的维护,我不想有任何侧门或者后门的。
建筑师: 先生,防火出口不是可选的,根据城市代码的消防要求。
客户: 我不是付钱让你要阐述的。 按照我的要求做。

建筑师然后询问如何在没有防火出口的情况下构建这座建筑?

在建筑和工程行业中,会话很可能会像这样结束:

架构师: 无法生成该建筑没有安全出口。 你可以转到任何其他特许的职业,他会告诉你同样的事情。 我现在要离开;当你准备好合作时,请打电话给我。

计算机编程可能不是一个许可行业,但是人们似乎常常会想到,为什么我们的行业不得到同样的尊重作为一个土木或者机械工程师- 好吧,别再观望。 当这些行业的垃圾( 或者完全危险) 需求时,它们只是拒绝。 他们知道这不是一个借口,"我尽力了,但他坚持,我必须做他说的。"他们可能会丢失他们的许可。

我不知道你或者你的客户是否是任何publicly-traded公司的一部分,但是以任何可以恢复的形式存储密码将导致你失败的几种不同类型的安全审计。 这个问题并不是因为某些"黑客"能够访问你的数据库来恢复密码。 最大的安全威胁是内部的。 你需要保护的是一些不满意的员工,他们带着所有的密码离开,并把它们卖给最高出价的人。 使用不对称加密和存储将私钥保存在一个单独的数据库也完全没有任何为了防止发生这种情况;没有任何位置总是有人与访问的私有数据库,而这是严重的安全隐患。

收费时没有道德或者责任以可以恢复形式存储密码。 句号。

你可以用公钥加密密码+ salt 。 对于登录,检查存储的值是否等于从用户输入+ salt计算的值。 如果有时间,当需要用明文还原密码时,你可以手动解密或者使用私钥进行semi-automatically解密。 私钥可以存储在别处,也可以对称地加密( 需要人工交互才能解密密码) 。

我认为这与 Windows 故障恢复代理的工作方式类似。

  • 密码被加密存储
  • 人们无需解密就可以登录到纯文本
  • 密码可以恢复为纯文本,但只有私钥,可以存储在系统( 在银行保险柜里,如果你想) 之外。

不要放弃。你可以用来说服你的客户的武器是 non-repudiability 。 如果你能通过任何机制,必须重建用户口令他们 客户机提供一个合法non-repudiation机制和它们都可以repudiate任何事务,它必须依赖密码,因为没有方法的供应商来证明他们没有重建它的密码并将该事务利用本身。 如果密码被正确地存储为摘要而不是密文,这是不可能的,这是因为end-client自己执行了事务,或者违反了 w.r.的职责。 密码。无论是哪种情况,都会使责任与他直接。 我曾经从事过这样的情况,那可能会达到数亿美元。 不是你想要的东西。

你不能为以后的纯文本检索而存储密码。 就这么简单。 甚至Jon飞碟也不能在道德上储存密码以备以后的纯文本检索。 如果你的用户可以纯文本或者其他方式检索密码,那么在你的代码中发现安全漏洞的黑客可能也会这样。 这不仅仅是一个被泄露的用户的密码,而是给了他们所有的负担。

如果你的客户有问题,告诉他们存储密码recoverably是违法的。 这里sites,在英国无论如何,间于用户在共享密码相关数据保护法 1998 ( 特别是调度 1,第II部分,第 9段) 需要数据控制器要使用适当的技术处理以保证个人数据的安全,考虑到,除此之外,故障可能会带来意想不到的危害如果数据并未泄露--这可能是 considerable. 如果他们还是找不到grokking电缆不够长,不能是一个问题,把他们推荐给几个实际的例子,比如这一个

最简单的方式让用户来恢复这条记录他们在自动带着它们和一个登录就是 E-mail 这些参数一次性链接在一个页面中,他们可以选择一个新的密码。 创建一个Prototype并将它的显示给它们。

下面是我在主题上写的几个博客文章:

的更新:我们现在开始看到对那些没有正确保护用户密码的公司的诉讼和起诉。 如果我记错了,LinkedIn实际上是在加密它的用户密码,但是它使用的加密太弱,无法生效。

阅读完这部分后:

在下面的注释中我做了时间,以至于网站适合那些很大程度上朝向程度增加,副阿甘,还是很年轻可能会造成混乱,是人们在它们被要求执行一个安全的密码恢复例程。 虽然我们可能会发现它变得简单和平凡在这些情况下某些用户需要这些额外的帮助下,可以算不了服务的科技帮助他们到系统中,或者让它直接向他们发送电子邮件/显示。

位于应用程序的流失率从这些人口统计学变量上可以 hobble mind,在这样的系统上如果用户是没有得到这样的访问级别帮助,所以请回答有了这样一个安装程序。

我想知道这些需求是否有一个可以恢复的密码系统。 例如:Mabel姑妈打电话说"你的互联网程序不工作,我不知道密码"。 "好"说客户服务无人机"让我核对一些细节然后我会 给你一个新的密码。 下次登录时,会询问你是否要保留密码,或者将它的更改为你更容易记住的内容。"

然后系统设置为知道什么时候发生密码重置并显示"你要保留新密码还是选择新密码"消息。

PC-literate比被告知的旧密码更糟糕? 当客户服务人员可以犯错时,数据库本身在被破坏时更加安全。

评论我的建议不对,我将建议一个解决方案,它实际上是你最初想要的。

Michael Brooks对CWE-257非常有发言权- 无论你使用什么方法,你仍然可以恢复密码。 那么这些选项如何:

  1. 用英镑加密密码 其他人 公钥筛选器- 某些外部颁发机构。 这样,你就不能亲自重建它,并且用户必须求助于那个外部机构,并要求他们恢复密码。
  2. 使用从第二个密码短语生成的密钥加密密码。 执行这里加密client-side并从不将它的传输到服务器。 它的input,然后,选择恢复,接下来执行解密操作由re-generating再次client-side了钥匙。 诚然,这种方法基本上使用了第二个密码,但是你可以告诉他们写下来,或者使用旧的security-question方法。

我认为 1.是更好的选择,因为它使你可以在客户公司中指定某人来持有私钥。 请确保他们自己,生成密钥并将其存储与安全的等等 中的说明,你甚至可以添加安全通过选举来只加密和供应从密码到内部的第三方某些字符,所以他们要破解密码猜测它。 向用户提供这些字符,他们可能会记住它是什么 !

出于这个问题的回答,有很多关于用户安全问题的讨论,但是我想添加一些好处。 在 system, stored.迄今为止,我还没有看到人合法拥有一个可以恢复的好处提到的密码 设想一下:

  • 用户是否通过电子邮件将密码发送给他们? 有啊他们收到更多受益于一个one-time-use密码重置链接,这就有希望允许他们能够选择他们将记住的密码。
  • 用户是否从屏幕上显示密码受益? 不,出于相同的原因,他们应该选择一个新密码。
  • 用户是否受益于支持人员向用户说出密码? 不;再次,如果支持人员认为用户的密码对密码的要求正确,那么给用户一个新的密码和更改它的机会就更好了。 此外,电话支持比自动密码重置更昂贵,所以公司也不享受。

似乎只有那些具有恶意的密码的人或者那些需要第三方密码交换( 请不要使用所说的api )的可怜的api的支持者才能受益。 也许你可以赢得你的论点由老实地说,说明给到客户那公司收益没有好处,只有负债通过存储可以恢复的密码。

在这类请求的行之间阅读,你将看到你的客户可能不理解或者根本不在乎密码是如何管理的。 他们真正想要的是一个认证系统,这对他们的用户来说并不难。 因此除了告诉他们密码他们实际上不需要可以恢复的方式,你应该给他们提供方式来使认证过程更顺利,特别是如果不需要繁重的安全级别的,比如说,一个银行:

  • 允许用户使用他们的电子邮件地址作为用户名。 我看到很多情况下用户忘记了他们的用户名,但很少忘记他们的电子邮件地址。
  • 提供OpenID并让第三方支付用户遗忘的费用。
  • 放宽密码限制。 我相信我们已经全部无比恼火当网站不允许你首选的密码,因为一些无用的需求,像"不能使用特殊字符"或者"你的密码太长"或者"你的密码必须以字母开头。"也,甚至如果比密码强度容易使用是其中一个较大的关注,你可以放轻松的non-stupid要求通过允许短字符类的密码或者不需使用混合使用。 放宽限制后,用户更可能使用他们不会忘记的密码。
  • 不过期密码。
  • 允许用户重新使用旧密码。
  • 允许用户选择自己的密码重设问题。

但如果你由于某种原因( 请告诉我们原因) 真的,真的非常需要能够有一个可以恢复的,你可以屏蔽用户浏览网页时不会一来就他们的其他在线账户密码通过给出大家一个non-password-based认证系统, 因为人们已经熟悉用户名/密码系统,而且他们是一个well-exercised解决方案,这将是最后一种方法,但是肯定有很多创造性的替代方案:

  • 允许用户选择数字插针,最好不是 4 -digit,并且最好在brute-force尝试被保护时。
  • 让用户选择一个只有他们知道答案的简短答案,永远不会改变,他们永远不会改变,并且他们不会介意其他人发现。
  • 让用户输入一个用户名,然后绘制一个具有足够排列的easy-to-remember形状来防止猜测( 看这个漂亮的照片是如何让G1解锁电话的) 。
  • 对于网页,你可以auto-generate一个模糊生物基于用户名( 有点像 identicon ) 和儿童站点要求用户给它希望的一个秘密的名字。 他们可以被提示输入生物名称的秘密以登录。

一个中途的房子怎么样?

使用强加密存储密码,并且不启用重置。

不重置密码,允许发送一次性密码( 第一次登录时必须立即更改) 。 让用户更改为他们想要的密码( 如果他们选择的话) 。

你可以将它的作为一个安全机制来重置密码。

根据我对问题的评论:
一个重要的一点已经被几乎所有的人 glossed 。 我最初的React与 @Michael Brooks非常相似,直到我意识到,像 @stefanw,,这里的问题是坏的需求,但是这些都是它们。
但是,后来我想到,可能不是这种情况 ! 这里缺少的点,是应用程序资产的unspoken 。 简单来讲,对于低价值系统,一个完全安全的身份验证机制,与所有有关的进程,将是开销太大,和错误的安全选择。
显然,对于银行来说,"最佳实践"是必须的,并且在道德上不能违反 CWE-257. 但是很容易想到低价值系统,它不值得( 但仍然需要一个简单的密码) 。

重要的是要记住,真正的安全专业技术是在寻找适当的权衡,而不是在"最佳实践"dogmatically喷动的,任何人都可以在线阅读。

因此,我建议另一个解决方案:
根据系统的价值,并适当只如果该系统是low-value无"价格不菲"资产( 标识本身包括),有有效的业务需求,进行合理的引导过程不可能( 或者非常困难或者昂贵),客户端是由十分清楚你们的注意事项- -
那么可以适当地允许可逆加密,而不需要特殊的hoops 。
我的停止只是说不使用加密,因为实现( 甚至考虑passible密钥管理) 非常简单/廉价,而且它提供了一些保护( 超过了实现它的成本) 。 另外,看看如何向用户提供原始密码,无论是通过电子邮件,在屏幕上显示等等。
因为这里假设被盗密码( 即使在聚合中)的值很低,所以这些解决方案中的任何一个都可以是有效的。


因为里就有了热议,实际上几个活泼的讨论,请在不同的岗位上和seperate评论主题,我将添加一些澄清,并响应其他地方,已经提出了一些很好的点这里。

首先,我认为这里的每个人都允许检索原始的用户密码,这是不好的做法,而且通常不是一个好主意。 这一点并不存在争议。
更进一步,我将强调在许多情况下,大多数情况下都是错误的,甚至是 foul,恶心和丑陋的

但是,现在的问题是围绕在原理 ,症结在于那里的所有情形中它可能不是必要来禁止本,如果有,如何这样做的最正确的方式符合当时的情况 。

参与到游戏中,以负担得起这种protection,现在,就像 @Thomas, @sfussenegger 所以很少有其他人提到的,唯一合适的方式回答了这个问题,是要做了彻底的任何给定( 或者假设的) 风险分析情况,可以了解什么是处于危险状态,有多少值得来保护,而哪些其它 mitigations are.
不,这不是一个时髦词,这是real-live安全专业的基本工具之一。 最佳实践最好是一个点( 通常为那些没有经验和黑客的人),在那个点之后,深思熟虑的风险分析接管了。

y'知道,这很有趣- 我总是认为自己是安全狂热者之一,而不知何故我在那些所谓的"安全专家"。 好吧,真相是- 因为我是发烧友,和实际的实际生活的安全专家- 我才不相信喷动"最佳实践"dogma ( 或者 CWEs ) 如果没有这种 all-important 风险分析 。
"谨防安全狂热者在他们的工具包中快速应用所有的东西,而不知道实际的问题是什么。 更多的安全性并不一定等同于良好的安全性。"
风险分析和真正的安全的妄想狂将鼠标指向一个更智能值/风险-based折中基于风险潜在损失可能威胁互补建议 等等"安全专家",它不能指向任何声音风险分析为依据,或支持逻辑的权衡但它的需要而不是更喜欢喷口 dogma 。CWEs都不承担任何责任理解如何执行风险分析是圈表示但安全hack和他们的经验是不值得的卫生纸上他们打印它。

确,我们就是这样得到ridiculousness的,它是Airport安全。

但是在我们讨论在这种情况下做出适当权衡之前,我们先看看明显的风险( 显然,因为我们没有所有的背景信息,因为这个问题可能存在) 。
我们假设一个LOW-VALUE系统,但不是 trival,它是公共访问- 系统所有者想要防止临时模拟,但"高"安全性不如易用性。 ( 是的,这是一个合理的折衷,接受任何精通的script-kiddie都能为站点提供支持。) 。 等等,现在不适合流行)?
只是作为一个例子,让我们假设我我在整理一个简单的网站到一大家族聚会上,让每个人都来思考,今年我们想去的地方在我们的露营旅行。 我是不太担心一些匿名的黑客,甚至是堂兄弗雷德挤压在重复的建议回到湖Wantanamanabikiliki一样,我也一样对伯母 Erma,即,无法登录,当她需要。 现在,Erma姑妈,作为一名核物理学家,并不是很擅长记住密码,甚至是使用计算机。 所以我想消除她的所有摩擦。 再一次,我不担心黑客,我不想愚蠢的错误登录- 我想知道谁来了,他们想要什么。

总之。
那么我们这里主要的风险是什么,如果我们对称加密密码,而不是使用单向散列?

  • 模拟用户不,我已经接受了风险,而不是有趣。
  • 邪恶的管理员嗯,也许,但是,我不关心是否有人可以冒充另一个用户,内部或者不。 无论如何都和一个恶意管理员具有想拿走密码无论什么 - 如果你不见了的管理员坏,它的游戏结束了。
  • 另一个问题是,身份实际上在多个系统之间共享。 啊这是一个非常有趣的风险,需要更仔细的观察。
    让我从为最小数目,使得它不是实际的共享,说是 证明,或者身份 。代表的身份验证凭据。 好,因为共享密码会有效地允许我进入另一个系统( 比如说,我的银行账户或者 gmail ),这实际上是同一个身份,所以它只是语义。 除了不是 。 标识由每个系统单独管理,在这里场景中是( 虽然可能有第三方标识系统,比如 OAuth - 仍然与这个系统中的身份分离- 更多关于这个) 。
    于在核导弹site,相关的风险在这里,同样地,核心的点在于,用户会输入他的( 相同) willingly密码为几个不同的系统- 和我的网站的现在,我( 管理员) 或者任何其他黑客将可以访问erma.姑妈的密码。

嗯哼嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯。

你觉得这里有什么不对劲?

它应该。

让我们从这一事实要保护核导弹系统是不是我责任开始,我只是建立一个frakkin家人一起远足网站( 为我的家族) 。 所以谁的责任是? 嗯。。那核弹系统? 嘿嘿。
其次,如果我想窃取某人( 在安全站点和not-so-secure之间重复使用相同密码的人)的密码- 为什么我会打扰你的网站? 或者正在使用对称加密? Goshdarnitall,我可以把自己的简单网站放在上,让用户注册接收关于他们想要的重要新闻。 Puffo很快,我就把他们的密码"被窃"。

是的,用户教育总是会在hienie中bite我们,不是?
你也无能为力。。 就算你是他们的密码进行哈希计算在你的网站上,以及执行其他任何操作试验场地的到他们能想到的,你添加保护密码不是一个白衣邮箱,如果他们想要保持promiscuously坚持它的密码的每一个网站都它们的头撞在。 不要尝试尝试。

换句话说,不属于你自己的密码,所以不要当作看看股票投资组合

所以,我的亲爱的安全专家,作为有一个老太太的温蒂"用来表示询问,风险在哪里"?

另一点,以回答上述问题:

  • CWE不是法律,法规,甚至是标准。 这是个公共的弱点,换句话说,反过来"最佳实践"的集合。
  • 这个问题是一个实际问题,但被误解的共享标识( 或者被曲解) 由naysayers这里。 在 itself(), 中共享身份是一个问题,而不是在low-value系统上破解密码。! 如果你在low-value和高价值系统之间共享密码,问题就已经存在了 !
  • 通过通过,上一点的会实际点根据 使用OAuth和类似的东西对于这两种这些low-value系统,和价值很高的银行系统。
  • 我知道这只是一个例子,但( sad )的系统并不是最安全的。 不像你的博客 cat 服务器,也不超过一些安全的银行。
  • 加密密钥不发生这种情况只是在军事知识,或者双控制,拆分,事实上现在 PCI-DSS 需要传了这一情况的基本上所有的商家,那么它就不是那么打出这了( 如果该值合理) 。
  • 对那些抱怨这样的问题的所有人来说,开发人员的职业看起来如此糟糕: 就是这样的答案使得安全职业看起来更糟糕。 同样,business-focused风险分析是必需的,否则你就会变得一无是处。 除了错误之外。
  • 于正确的tradeoffs,相关我想这就是为什么它不是一个好主意,我们只能取一个普通开发人员和删除更多的安全责任在他,但不训练,换种思维方式,并以 look. 无意冒犯,对于你们这里的人来说,我是所有的,但是更多的训练是为了。

多么长的日志。。
但是为了回答你原来的问题,@Shane:

  • 向客户解释正确的做事方式。
  • 如果他仍然坚持,解释更多,坚持,争论。 如果需要,请进行颠簸。
  • 向他解释业务风险。 细节不错,数字更好,现场演示通常最好。
  • 于他下一步是要你去做一个判断call,如果相关,并提出了有效的业务原因- 这是 time:
    这里站点是low-to-no-value它真的是一个有效的业务案例? 这对你来说足够好了? 你是否可以考虑其他风险,这将超过有效的业务原因? ( 当然,客户端不是恶意站点,但这是个漏洞) 。
    如果是的话,直接走吧。 不值得努力,摩擦和丢失的用法( 在这种假想情况下) 来放置必要的过程。 任何其他决策( 同样,在这种情况下) 都是一个糟糕的折衷。

it,因此,底线是,和上一个实际的答案- 它与一个简单的对称算法进行加密,保护与强大的acl和最好是DPAPI加密密钥或者类似的东西,记录它,并有客户( 一个足够高级的人做出决定) 签定断了。

...