我目前正在为客户创建一个应用程序,允许他们自动向客户收取信用卡账单。
我很好奇是什么最佳做法安全地存储和访问信用卡信息,以及任何其他敏感信息,如社会安全号码,帐号等等上。
我假设某些类型的加密将被采用,但在我深入挖掘之前,我想看看其他人如何处理这些类型的要求。
这并不重要,但我们正在使用Microsoft SQL Server为数据库设计软件,并使用C#和ASP.NET。
答案 0 :(得分:5)
阅读PCI requirements。一切都将在那里。
实际上,必须关注它们。
答案 1 :(得分:3)
1 - 除非你真的需要它们,否则甚至不收集SSN。除非你是银行或政府,否则你很可能没有。
2 - 除非你真的需要
,否则不要收集其他敏感信息3 - 使用任何适当的控件(数据库的独立机器,防火墙,访问控制等)来实现您真正需要保留的东西。
答案 2 :(得分:3)
使用积极的标准来保护主机系统在操作系统和物理安全方面的安全,例如NSA guidelines。
将数据库放在与Web服务器或其他功能不同的系统上,以防止物理访问和权限升级漏洞利用。
防御性地编程,以避免SQL注入攻击和类似攻击。
开发时,首先考虑安全性。之后回来并应用安全性将是困难且容易出错的。
尝试分离应用程序的各个部分...即不要使用相同的查看器或控制器进行“公共”访问和“私人”访问。
请注意并遵守有关处理此数据的所有当地法律......其中有很多。
保持supply of envelopes左右,以便在发生违规时通知您的客户。如果您丢失了2600万客户的信息,您可能无法获得足够的信封来满足通知他们违规的法定时间。
答案 3 :(得分:1)
不 - 我的意思是,你真的需要吗?
有一个强大的第三方支付服务市场,他们可以为您收到详细信息,只需在付款后向您发送消息。有像PayPal这样的替代品,您可以使用MD5或SHA1保护数据 - 丢弃琐事,例如精确的数字字符串。
答案 4 :(得分:1)
不同的应用需要不同的PCI标准。如果您的应用程序只是收集CC编号,然后将其提交给第三方PCI兼容支付网关,那么您的合规性要求也不会太差 - 只要您不存储卡号或CVV。
在记录方面,您应该“消除”信用卡号码,例如保留前6位数字和后3位数字但隐藏中间数字。不要记录CVV。
PCI标准文档非常详细,但这完全取决于您的应用程序对您所需的合规程度的要求。
答案 5 :(得分:0)
与OWASP威胁密切相关,并确切知道如何在您的应用程序和框架中对抗它们。很难相信有多少人对SQL注入和跨站点脚本攻击采用愚蠢的半解决方案。