加密信用卡号码的最佳和最安全的乳清 - 数据库或前端?

问题描述

我想以安全的方式在数据库中存储信用卡号:

CC_Number VARBINARY(100) NULL DEFAULT NULL

(不在真实网站中)

  1. 任何拥有加密抄送号码的人都可以在他的 sql 中解密它吗?
  2. 在客户端/前端(Javascript、ReactJS)对信用卡号进行加密是否更好?

我不打算让它成为现实,但收费流程在客户端如何运作?

我的服务器端使用 C# 和 sql Server。

解决方法

我不知道您所说的“在客户端”加密是什么意思。当您的前端收集您用户的信用卡号码时,它会将这些 CC 号码发送到服务器,通常是通过一些 AJAX 调用,使用双向 SSL。在途中,中间的人应该不太可能拿到信用卡号。

在服务器端,您有两种选择。您可以使用应用程序语言(例如 Java、Python、C#)加密信用卡号,然后将它们以二进制形式存储在数据库中。或者,您可以在数据库中使用加密的列/表。这些方法各有优缺点。如果采用前一种方法,则数据库配置工作较少,但是每次需要信用卡号时都必须手动编写代码来加密和解密。如果您采用后一种方法,应用程序工作量会减少,但您必须配置数据库以进行加密。