Как я могу запретить пользователям переопределять общую стоимость в корзине покупок, когда она отправлена ​​как скрытое поле ввода? - PullRequest
7 голосов
/ 06 мая 2010

У меня серьезные проблемы с приемом платежей.

Я передаю общую сумму в скрытом поле

<input type="hidden"
  name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price"
  value="129.00"/>

Некоторые пользователи изменили это значение на 2 с помощью firebug и отправили форму. Вместо 129 долларов мы получили только 2 доллара.

Понятия не имею, как это сделать, кто-нибудь, помогите мне быстро.

Ответы [ 3 ]

9 голосов
/ 06 мая 2010

я передаю общую сумму в скрытом поле

Не делай этого!

Поскольку вы знаете, какие предметы пользователь пытается приобрести, рассчитайте стоимость серверной части.

3 голосов
/ 06 мая 2010

С поставщиками платежных услуг (PSP) общие настройки связи обычно выглядят примерно так:

1) Ваш сервер связывается с PSP и устанавливает транзакцию, указывая необходимую сумму и данные вашей учетной записи PSP.

2) PSP отвечает идентификатором транзакции, который вы затем добавляете в форму. Этот идентификатор транзакции не содержит никакой информации о задействованных ценах - это просто идентификатор записи транзакции, установленной вашим сервером с PSP.

3) Посетитель заполняет форму, которая отправляется в PSP. Затем они перенаправляют посетителя обратно на ваш сайт.

4) Ваш сервер запрашивает сервер PSP и проверяет, что транзакция прошла успешно (т. Е. Метод оплаты посетителями подтвержден транзакцией с PSP и т. Д.)

Связь между сервером и PSP обычно выполняется с использованием библиотеки, такой как curl.

Google предоставляет ряд библиотек / примеров того, как правильно обрабатывать транзакции (и, по моему опыту, большинство других PSP делают то же самое): http://code.google.com/apis/checkout/samplecode.html

Точные детали связи могут различаться в зависимости от PSP, но в целом не должно быть необходимости, чтобы «общая сумма» когда-либо проходила через форму, отображаемую посетителю. Все это делается от сервера к серверу, поэтому посетитель не может изменить детали.

3 голосов
/ 06 мая 2010

Это ошибка из учебника, аналогичная тому, как спрашивать покупателя в обычном магазине, сколько стоит товар, и доверять этому ответу. Это особый случай общего принципа безопасности: не доверяй клиенту. Hobodave ответ правильный; рассчитать цены, налоги и т. д. на стороне сервера.

...