Разместите форму с «секретными» данными с сервера и откройте результат в браузере пользователя. - PullRequest
1 голос
/ 26 июня 2011

Я строю простой процесс оплаты с использованием внешнего платежного шлюза.
1) Пользователь выбирает продукт, нажимает Купить ,
2) Сервер отправляет POST-запросы на загрузкустраница оплаты со стороннего сайта.

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

Есть ли способ запросить страницу шлюза, разместив данные с сервера и открыв результат в браузере пользователя?

Если они должны проходить через браузеры пользователяЧто было бы более неясным способом сделать это?Играя с заголовками HTTP в ответе?Публикация с помощью вызова AJAX?

Спасибо.

PS: Речь не идет о посте на молчаливом сервере (т.е. с curl), итоговая страница должна открываться в браузере пользователя.


PPS: Ну, немного поиграв с API платежного шлюза (если быть точным, Payline.com), я обнаружил, что они предоставляют механизм для этого, когда сообщение создается сервером, токенвозвращается, и пользователь переходит на страницу со всем заполненным. Браузер не отправляет данные, а это именно то, что я хотел.Это решение моей проблемы, но не ответ на этот вопрос.Я не буду публиковать это как ответ, и я все еще думаю, что было бы хорошо иметь ответ.

Ответы [ 2 ]

2 голосов
/ 26 июня 2011

Это возможно, но оно настолько сильно зависит от API поставщика платежного шлюза, что невозможно дать вам индивидуальный ответ.Тем не менее, есть несколько способов сделать это.

HTTP-заголовки НЕ способ сделать это.Также не AJAX-вызов.Оба в высшей степени легко подделать.Лучше всего просто проверить заказ на полученную сумму и отменить оплату, если они не соответствуют более чем на небольшую (+/- 1%) маржу за ошибку, чтобы учесть округление и еще много чего.Если кто-то напутает с результатами, их деньги вернутся минус пару дней (поскольку возвращение денег часто медленнее, чем их взимание).

Второй способ сделать это - использовать curl для создания (как вы говорите)) сообщение молчаливого сервера, а затем возвращение результатов пользователю - по сути, действующий в качестве посредника между платежным шлюзом и вашими клиентами.Это, вероятно, не такое хорошее решение, как первое.

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

1 голос
/ 26 июня 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...