代码之家  ›  专栏  ›  技术社区  ›  Garis M Suero

将信用卡信息存储到数据库中的最佳实践

  •  43
  • Garis M Suero  · 技术社区  · 15 年前

    在我的国家,网上支付并不是一件老事情,去年我第一次看到一个直接向当地银行账户付款的网络应用程序。

    所以,我是一个新手编码网络支付系统。

    我的问题是,将信用卡信息存储到数据库中的最佳实践是什么…

    我有很多想法:加密信用卡,数据库安全限制等。

    你做了什么?

    7 回复  |  直到 6 年前
        1
  •  83
  •   Dean Harding    15 年前

    不要这样做

    所涉及的风险太大了,您通常需要接受外部审计,以确保遵守所有相关的当地法律和安全实践。

    有许多第三方公司为您做这件事,他们已经经历了所有的麻烦,确保他们的系统是安全的,他们遵守当地的法律等等。我过去在美国使用过的一个例子是 authorize.net . 一些银行也有系统,你可以连接到存储信用卡数据和处理支付。

    我知道你所在的国家可能没有美国那么严格的法律,但在我看来,这并不是你自己动手的借口。当你和别人的钱打交道时,风险太大,无法保证。

        2
  •  32
  •   Alan    15 年前

    为此,我建议采用全面、分层的方法。

    首先,存储信用卡信息应该是一种选择。

    第二,数据应该安全地存储,使用一种强大的加密形式。我推荐256位密钥大小的AES。确保在选择密钥时使用整个密钥空间(只使用随机生成的字母数字符号字符串作为密钥是新手的错误)。

    第三,AES密钥需要妥善保护。不要在代码中嵌入值。如果您使用的是Windows,请考虑使用DPAPI。

    第四,您需要设置数据库权限,以便应用程序和计算机能够在需要知道的基础上进行访问。

    第五,保护数据库的连接字符串。

    第六,确保任何能够访问信用卡数据的应用程序都能正确地保护它。

        3
  •  20
  •   Waleed Al-Balooshi    15 年前

    至少遵循PA DSS(支付应用数据安全标准)。更多信息可以在这里找到:

    https://www.pcisecuritystandards.org/security_standards/pa_dss.shtml

    此外,查看PCI DSS也是明智的,可以在这里找到:

    https://www.pcisecuritystandards.org/security_standards/pci_dss.shtml

        4
  •  2
  •   Alan    13 年前

    您应避免存储任何信用卡信息,因为这样做会给您和客户带来风险。

        5
  •  1
  •   dplass    15 年前

    加密加密加密。如果不一定要解密,就不要解密-不要解密来显示最后4个数字。不要解密来告诉用户他们的卡是什么。

    实际上,如果可以的话,甚至不要将加密的卡号和其他用户信息保存在同一个物理服务器中。

        6
  •  1
  •   Redtopia    12 年前

    Authorize.net 有一个 Customer Information Manager API 这允许您在他们的系统中存储客户信息。每月20美元,作为你账户的附加费用。

        7
  •  -4
  •   Mogsdad    9 年前

    我建议您用一个强算法(类似的AES)和一个长密钥来加密卡号。

    然后,将您的密钥保存在安全的地方,类似于外部硬盘或光盘。 当您需要密钥时,请使用外部硬密钥。

    如果您使用的是共享主机,则必须将密钥存储在外部设备中。

    严格数据库

    1. 为数据库定义严格的用户
    2. 如果不需要,请删除数据库的根用户。