2010-02-16 3 views
5

На шаге 3 У меня есть форма, которая принимает кредитную карту, шаг 4 перепечатывает информацию, включая последние 4 цифры кредитной карты, а на этапе 5 мне нужно знать полный CC# для ее обработки и отправки мое https-соединение с сторонним поставщиком - следует ли хранить его с помощью скрытых входов или $_SESSION, чтобы я мог получить доступ к нему между 3-м и 5-м шагами?Самый безопасный способ передачи номера кредитной карты через многоступенчатую форму?

FYI: Весь мой сайт уже https'd.

ответ

9

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

+0

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

+2

Вы можете сохранить этот рабочий процесс с помощью Braintree. На третьем шаге вы можете сохранить кредитную карту в хранилище кредитных карт Braintree. Braintree предоставит вам токен, который вы можете использовать для оплаты кредитной карты позже. Вы можете получить номер маскированной кредитной карты на своем 4-м шаге, чтобы отобразить ее пользователю для подтверждения. Затем, чтобы зарядить кредитную карту, сделайте вызов API на 5-м шаге, используя токен с шага 3. Braintree может исключить как хранение, так и передачу данных кредитной карты из вашей среды. getbraintree.com Раскрытие информации: Я работаю в Braineree. –

0

нет способ. вы должны сохранить его (каким-то образом) зашифрованным на сервере.

+0

Посмотрите мои правки, это SSL'd - достаточно хорошо? –

+0

Нет, SSL'ed определенно не достаточно хорош. –

+0

Определенно нет - SSL только шифрует канал. Он должен храниться в зашифрованном виде, если его даже хранить вообще, чего, вероятно, не должно быть. – thetaiko

1

Не храните его вообще. Там много средств обработки кредитных карт. Если вы абсолютно не должны иметь эту функциональность в доме, не делайте этого.

Серьезно, возьмите выбирать.

+0

Как бы зарядить его, если я не могу его хранить? В магазине я имею в виду страницы, а не в базе данных или что-то еще. –

+0

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

+0

На самом деле я должен перефразировать это - я * am * передаю его другому сервису, я не вручную поручаю CC своим собственным кодом, сторонним поставщиком, но код для предоставления CC TO стороннему поставщику на пятом/последнем шаге, и я вхожу в CC на третьем шаге. –

2

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

Если вы хотите реализовать многоступенчатый процесс проверки, я бы предложил сделать некоторые манеры AJAX/Javascript на стороне браузера. Вы можете собирать информацию о выставлении счетов, используя серию DIV, которые скрыты/свалились и отправляют полный набор данных за один раз, одновременно отправляя данные CC на ваш сервер, а затем передает данные CC в ваш процессор платежей.

+1

Но как бы вы поддерживали строго серверную обработку, если JS отключен? –

+0

Для пользователей, не относящихся к javascript, вам понадобится 1) решение, описанное в ответ Криса, или 2) отправьте сообщение подтверждения с информацией CC в скрытое поле обратно пользователю. Второй вариант может вызвать проблемы, если страница кэшируется браузером или прокси-сервером. – leepowers

+0

Если бы вы полностью сделали это, вы можете подробно рассказать о том, хотите ли вы оставить логику POST/SESSION на каждой странице отдельных шагов? –

2

Определенно не в поле скрытой формы. Если пользователь уходит или сохраняет страницу, или кто-то попадает на кнопку «Назад», тогда доступна полная информация о CC. Компьютер может использоваться совместно с другими.

Если вы сохраняете CC на диск/базу данных, тогда CC должен быть зашифрован, иначе вы нарушите требования к платежной карте (PCI). Вы можете сохранить последние 4 цифры в отдельности для удобства.

Обратите внимание, что если вы проводите сеансы (по другим причинам), вам необходимо следить за атаками на сеанс, включая, но не ограничиваясь ими, фиксацию сеанса.

Еще одна возможность состоит в том, чтобы переделать вашу клиентскую сторону так, что различные этапы - это просто вызовы ajax (cc находится в переменной js не в поле формы) и использовать CSS для отображения/скрытия различных divs - на последнем шаге после всего информацию на ваш сервер.

+0

Как использовать скрытые divs, отличные от использования скрытых полей? – afilina

Смежные вопросы