Как надежно хранить информацию о кредитной карте как часть разработанного пользователя в рельсах?

Я делаю веб-сервис, где информация о кредитной карте будет храниться как часть профиля пользователя и использоваться для обработки платежей.

Однако мне не нравится идея сохранения информации о карте в виде необработанного текста в базе данных. Вместо этого я хотел бы каким-то образом хешировать номер карты, чтобы, если злоумышленник получил доступ к базе данных, пользователи сайта оставались максимально безопасными.

Я полагаю, что это может работать подобно тому, как хэшируется пароль, но важное отличие состоит в том, что мне нужно иметь возможность отменить хеширование и отправить информацию о кредитной карте через сторонние API.

Как мне добавить хэшированную кредитную карту пользователю Devise в рельсах?

Спасибо за любую помощь

1 ответ

Решение

Я настоятельно рекомендую не хранить номера кредитных карт в вашей собственной базе данных. Очень сложно соответствовать Стандарту безопасности данных индустрии платежных карт - он же соответствует PCI.

http://en.wikipedia.org/wiki/Payment_Card_Industry_Data_Security_Standard

По сути, даже если номера карт хешированы, вы все равно несете ответственность за соблюдение очень высоких стандартов безопасности. Только процессоры кредитных карт и / или шлюзы (PayPal, Stripe, Authorize.net и т. Д.) Обычно хранят информацию о кредитных картах, потому что их работа заключается в том, чтобы беспокоиться о соблюдении этих строгих стандартов PCI, чтобы вы, как продавец, не имели беспокоиться об этом. Относительно легко использовать их серверы для хранения зашифрованной информации о платеже ваших клиентов и позволить клиенту снова получить ее, когда он хочет сделать новую покупку. Поскольку вы, как продавец, фактически не можете получить доступ к информации о карте, зашифрованной или нет, вы не несете ответственности за кражу номера карты - процессор.

На самом деле это отличная сделка и главное преимущество для большинства этих процессоров.

РЕДАКТИРОВАТЬ

Хорошие новости! Похоже, что Ordr.in имеет эту услугу доступной, и из их FAQ, похоже, что они также совместимы с PCI:

Соответствует ли Ordr.in PCI для обработки кредитных карт?

Да. Мы работаем с Braintree для обработки PCI Compliant CC по всем транзакциям.

Похоже, все, что вам нужно, здесь, в документации API - https://hackfood.ordr.in/docs/user

Из того, что я вижу, все довольно просто. Пользователь использует ваш сервис в качестве третьей стороны для создания учетной записи в Ordr.in. Пользователь может сохранить кредитную карту в свою учетную запись (все хранятся на серверах Ordr.in), а затем, когда пользователь хочет внести плату, они просто войти в систему с помощью своей электронной почты и пароля. Кажется довольно прямо вперед! Я не могу поручиться за ordr.in лично, но они выглядят вполне законно.

Другие вопросы по тегам