PHP Хранение данных карты с использованием стандартов PCI ИЛИ третья сторона для хранения данных карты? - PullRequest
1 голос
/ 25 апреля 2019

Итак, сегодня я сталкиваюсь со сложной проблемой. В настоящее время я работаю над интерфейсом оплаты разрабатываемого приложения. Я должен дать приложениям будущих пользователей возможность хранить и редактировать данные своей платежной карты для удобного оформления заказа. Каждый бизнес в моей отрасли делает то же самое. Поэтому предоставление моим пользователям возможности добавлять и редактировать данные карты просто необходимо.

Я думал о том, чтобы сохранить информацию о пользовательских карточках в базе данных AWS RDS, которую мы арендуем с использованием стандартов PCI. Я планирую использовать PHP и mcrypt вместе с солью и перцем для шифрования и дешифрования данных карточки, когда это необходимо.

Считаете ли вы, что в этом случае уместно сохранить данные о платежах в нашей базе данных? или их сторонние провайдеры, которые будут хранить данные оплаты для нас?

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

Спасибо

1 Ответ

2 голосов
/ 26 апреля 2019

Я бы порекомендовал следующий план:

https://aws.amazon.com/blogs/security/how-to-enhance-the-security-of-sensitive-customer-data-by-using-amazon-cloudfront-field-level-encryption/

Cloudfront -> Шлюз API -> Лямбда -> RDS

Функция Lambda - единственное место, гдеимеет доступ к закрытому ключу RSA для расшифровки значения поля, зашифрованного Cloudfront.Затем развернитесь и повторно зашифруйте информацию о владельце карты с помощью AWS Encryption SDK и, наконец, сохраните ее в RDS.Лямбда может использовать ключ KMS только для шифрования.Создайте отдельную лямбда-функцию, которая отвечает за считывание данных из RDS, расшифровку их с помощью KMS и передачу ее третьему лицу.

Существует гораздо больше дьявола в деталях решения, но впо крайней мере, вы не собираетесь подвергать риску ваше PHP-приложение и выставлять огромное количество кредитных карт, если будете следовать этому плану.В конце дня вы хотите ограничить количество мест, где обрабатывается информация о владельце карты, чтобы снизить риск аудита PCI.Я бы даже сказал, что у нас есть отдельный VPC и RDS для данных держателя карты.Верните «жетоны» в ваше приложение для справки.

...