Самый безопасный способ передать номер кредитной карты через многошаговую форму? - PullRequest
5 голосов
/ 17 февраля 2010

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

К вашему сведению : весь мой сайт уже https'd.

Ответы [ 5 ]

9 голосов
/ 17 февраля 2010

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

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

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

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

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

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

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

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

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

1 голос
/ 17 февраля 2010

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

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

0 голосов
/ 17 февраля 2010

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

...