Не храните информацию о кредитной карте в сеансе, не храните ее в базе данных, не храните в файле. Вместо этого запишите информацию о cc обратно на страницу рецензирования в виде скрытых вводов html.
Таким образом, поток программы будет работать так:
- Пользователь отправляет платежную и платежную информацию на сервер через HTML-форму.
- Сервер проверяет, что эта информация имеет правильный формат (т. Е. Кредитная карта имеет соответствующее количество цифр, был введен платежный адрес и т. Д.)
- После проверки сервер записывает обратно всю информацию, представленную как скрытые поля ввода формы. Это включает в себя адрес для выставления счетов, адрес доставки и информацию о кредитной карте.
- Форма на странице обзора (со скрытыми полями ввода) имеет кнопку с надписью «Завершить заказ» / «Завершить заказ». Эта форма обзора публикуется в сценарии оформления заказа.
- Скрипт финализации хранит информацию о выставлении счетов / доставке в вашей базе данных и передает информацию о кредитной карте на ваш платежный шлюз.
Преимущества этого метода двояки:
- Вы экономите накладные расходы и затраты на дополнительное соответствие PCI, которое требуется при хранении кредитной информации.
- Этот метод находится в пределах безопасности протокола SSL. Это означает, что зашифрованная информация о кредитной карте должна быть передана на ваш сервер в любом случае - этот метод по-прежнему зависит исключительно от эффективности SSL, без введения сложностей с сохранением данных кредитной карты.
Последнее замечание вызывает еще одну проблему - имея страницу обзора, вы удваиваете количество раз, когда зашифрованные данные кредитной карты передаются по сети. При использовании этого метода требуется минимум 4 передачи: клиент-сервер, сервер-клиент, клиент-сервер (снова), а затем сервер-шлюз. Без рассмотрения есть минимум 2 передачи: клиент-сервер и сервер-шлюз. Оправдывает ли удобство обзорная страница риск дополнительных передач? Это решение, которое вы, как веб-разработчик (и ваш клиент), должны принять.