python: двустороннее частичное хранение кредитных карт - PullRequest
2 голосов
/ 18 февраля 2010

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

Я использую Django, поэтому мне нужно решить это через Python. Какой был бы умный алгоритм для решения этой проблемы?

Ответы [ 2 ]

15 голосов
/ 18 февраля 2010

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

Если после того, как вы поняли, какие последствия вы хотите предпринять, то снова - следуйте рекомендациям PCI.Для симметричного шифрования номеров карт вы, вероятно, захотите использовать AES и разработать очень строгие политики управления ключами .

Если, однако, вы хотите сохранить только частичную картучисло, затем PCI сообщает, что вы можете хранить (в абсолютном максимуме) только первые шесть и последние четыре цифры.Первые шесть цифр - все, что вам нужно для идентификации типа карты.Последние четыре цифры, которые вы можете счесть необходимыми, помогут предотвратить проблемы, когда у клиента есть почти идентичные номера карт.

ИМХО хранение частичных номеров карт (в виде обычного текста) - это то, что вы хотите сделать, а затем передать обработку на аутсорсинг.шифрование, авторизация и расчёт на сторонний шлюз .Платежный шлюз даст вам уникальный идентификатор токена для каждой карты, которую вы им передаете, чтобы вы могли ссылаться на уникальную карту для повторной авторизации или возврата средств и т. Д.

2 голосов
/ 18 февраля 2010

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

Тщательно подумайте, прежде чем приступить к этому курсу ...

Возможно, вам лучше отдать этот вид работы кому-то, кто специализируется на ней (например, Paypal или Google Checkout и т. Д.).

...