我在使用MySQL的Linux服务器上使用PHP。
我有一个要求(我试图说出来)从用户那里收集信用卡信息,以便我们公司可以使用卡号来保存会议的酒店房间。我们根本不会自己收取卡,而只是将它们送到酒店。然后,我需要能够下载CSV文件,每次有人注册电子邮件时都会向管理员提供所有信息。
我试图解释这不安全,但是在我工作之前,其他几位开发人员已经为他们做了这件事。
我的问题是;反正是为了让这个安全吗?如果没有,是否有任何第三方选择来实现这一目标?
修改
我感谢所有到目前为止发布的人,它只是让我想要越来越少地尝试这样做。如果你可以为你的答案添加简单的解释,面向非技术人员,我们将非常感激,事实上,网站来源和链接将帮助我很多。我没有找到任何可以用非技术方式解释这一点的网站。
答案 0 :(得分:9)
首先,我不是律师。我以前曾多次实施CC处理代码,但我只熟悉丹麦的法律法规,因此您的里程可能会有所不同。
据我所知,您需要注意的是有限制(来自CC提供商的法律和法规)。我不知道你在世界的哪个地方,但在许多国家,你需要通过PCI认证来处理信用卡数据,这是一个非常繁重,昂贵和持续的过程。
其他国家/地区或州可能会制定通知规则,要求您支付通知持卡人是否违反安全规定的费用 - 除非您非常小心,否则不大可能。
一般来说,我会建议不要使用该程序。如果出现问题,您可能有可能承担任何费用。
答案 1 :(得分:7)
这是非常不安全的,我认为你反对它是正确的。那说......
一些想法:
酒店可以为您提供可以直接向您的用户传播的费率/组代码吗?也许你甚至可以给他们一个直接进入酒店预订页面的链接,代码已经填写完毕。
除非您可以在启用SSL的网站上进行此操作,否则不要考虑实施此功能。
请勿将CC编号保存在任何位置, 只是生成电子邮件并折腾 编号。这可以减轻您对大量非常困难的应用程序/服务器安全问题的担忧。
使用GPG或。加密电子邮件 相当于它受到保护 过境,只能由预定的收件人阅读。
答案 2 :(得分:7)
存储卡详细信息真是个坏主意。您正在以PCI-DSS审核的形式为自己打开一片痛苦的世界。它不像“使用加密”那么简单,您需要有适当的流程来安全地管理加密密钥,安排密钥轮换,安全登录访问等等......存储卡详细信息绝对是您要避免的
如果您 拥有某些内容,那么最好的选择可能是您(作为公司)从信用卡付款到您自己的商家帐户,然后单独支付酒店(来自您的银行账户/无论如何)。您作为客户代理向酒店付款。
大多数支付网关允许您安全地存储卡详细信息,并在以后收费(使用网关返回的令牌ID),这可能在这里很有用。但是您无法以任何方式检索卡片详细信息以将其传递到酒店,这就是您需要付款,然后单独付款到酒店的原因。
它仍然是一项艰巨的任务,因为即使使用这种简化的解决方案,PCI-DSS的许多领域也会发挥作用。
你问,所以这里有更多信息:
PCI-DSS 是Payment Card Industry Data Security Standard.这是一套指导原则,基本上适用于任何“触及”持卡人数据的公司,特别是卡号。从字面上理解它意味着对数据的任何处理,即使只是让它通过你的网络,而不是永久保存到磁盘,这足以要求你必须遵守,(尽管如果你不将细节保存到磁盘上会更容易)
您尚未说明您所在的世界的哪个部分,或者如何捕获这些卡片详细信息(互联网/电话/亲自)。这些细节对于如何实现合规性具有重要意义。
首先看一下PCI-DSS SAQ (Self Assessment Questionnaires)。这些SAQ是不存储持卡人详细信息到磁盘的公司的最低要求,并且应该给出对网络中需要安全的良好印象以及应该应用于整个网络的策略。公司
正如我所说,如果您考虑存储卡详细信息,那么事情会变得更复杂,因为作为一般规则,SAQ不再足够好。您需要参加QSA(合格安全评估员)的协助,他们将访问并提供有关数据存储的最佳实践以及其他各种要点的建议。对于此级别的合规性,您正在查看年度审核(由QSA执行)和季度网络扫描。看看audit procedures,详细了解所涉及的内容。特别要看第3节,不要低估implementing proper key management的难度。
总之,完全PCI合规性将非常昂贵。即使对于已经具有相当强大的安全策略的公司来说,引入QSA以及仅运行季度扫描和年度审计的成本可能会花费数千美元。
答案 3 :(得分:4)
我建议您至少密切关注卡行业PCI合规性。 Here是PDF文档。
答案 4 :(得分:2)
作为从事过此类系统工作的人,以纯文本格式存储任何信用卡信息是完全违法的。您必须加密所有数据,并且不允许您知道任何密钥。这是第22个问题,验证数据的唯一方法就是猜测听起来很悲伤。这就是意外收费发生的确切原因。
答案 5 :(得分:2)
正如其他人在此所说的那样,存储信用卡信息需要您获得认证。您可以要求提供信息来处理交易,但保留任何类型的存储是一个很大的禁忌。
幸运的是,像authorize.net,braintree.com,paypal.com等网站将允许您与他们的API进行交互,以便为您希望进行交易的每个实体获得“客户保险库ID”
这些第三方以100%合法的方式存储所有敏感信息。无论何时您希望使用其保存的信息进行交易,您都可以使用“保险柜ID”与服务进行互动。
我使用过authorize.net,BrainTree和PayPal。最近它是BrainTree并且取得了一些成功。除非您需要品牌认可,否则我不会推荐PayPal,或者您只是想直接转账,因为您绕过询问他们的任何类型的帐户信息(因为他们已经在PayPal中输入了它)。
答案 6 :(得分:1)
确保您的服务器尽可能安全并证明它尚未受到侵害。如果您的服务器受到破坏,这一切都不会很好。
使用SSL在传输过程中保护此信息。
收到后立即加密这些详细信息。这有助于保护静止。如果可能,使用密钥对的公钥对其进行加密,其中私钥(用于解密)在服务器上不。这很容易就是您将此信息放入您需要发送的电子邮件正文中,然后使用公钥加密对您的客户端拥有私钥进行加密。 (你可以在这里使用PGP)。通过这种方式,数据在您的服务器上尽可能短暂地提供帮助,然后一旦关闭服务器,只能由您的客户端访问。如果您使用对称加密算法,那么您的密钥也必须位于您的服务器上(磁盘,内存等),攻击者可以获取并使用它来重新获得对详细信息的访问权。
这本身并不是一种认可,但我之前在类似的情况下使用过这种情况并取得了良好的效果:http://www.pgp.com/products/commandline/
请记住,始终存在安全漏洞,但您将通过这些步骤为攻击提出一个很大的障碍。我还可以补充一点,您可以从服务器的即时版本中查看Trip Wire等系统完整性解决方案。当然,请确保您的所有密码都很强大。
答案 7 :(得分:1)
如果您通过电子邮件发送文件,请务必在发送和接收计算机上使用安全连接(HTTPS / IMAP或基于SSL的POP3,基于SSL的SMTP),并在发送前对文件进行加密。您也可以通过OpenPGP加密邮件和附件。此外,请确保两个邮件服务器之间的安全性(发送和接收),或者只是使用相同的域来发送和接收电子邮件地址。不要使用ZIP文件或相关的comrpessing容器的密码功能,因为它们通常在加密方面很弱。 如果您在文件系统(即USB pendrive)上发送它,请务必使用加密的(即TrueCrypt)。
确保有一台安全的计算机,其中包含下载和上传功能(加密分区,下载/上传发生,系统上没有间谍软件,密码系统,防火墙)。