Как проверить тело запроса с ценой - PullRequest
1 голос
/ 30 октября 2019

Согласно

Рассчитать цену по небезопасному внешнему интерфейсу?

Цены всегда должны проверяться на бэкэнде, поскольку запросы http могут быть изменены. По сути, на моем рынке пользователь может что-то купить, и в этом теле запроса оно содержит то, что он купил, и его цены, промежуточный итог, а также соответствующий идентификатор каталога для этого элемента. Однако, похоже, что всем можно манипулировать. Если бы я должен был проверить промежуточный итог, пройдя через все элементы в его порядке, они могли бы быть изменены, так что это не точно. Если бы я искал фактические цены в каталоге на основе идентификатора, эти идентификаторы каталога в теле запроса также могли бы быть изменены, указывая на неправильный элемент каталога. Как я мог бы поэтому проверить цену, основанную на теле запроса пользователя, которое содержит элементы и их цены, промежуточный итог и идентификатор каталога (базы данных) для каждого элемента?

Также, если я использую SSL, могу 't я тогда вычисляю цену на переднем конце?

1 Ответ

1 голос
/ 30 октября 2019

Вся корзина должна оставаться на сервере, клиент отображает корзину и запрашивает подтверждение. Цены также могут быть рассчитаны на клиенте, но они должны быть рассчитаны снова на сервере позже.

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

Все, что пользователь отправляет вам, может быть им изменено, если он достаточно техничен.

Использование encription не помогает, envice предотвращает изменения данных, происходящих во время перемещения между источником (клиентом) и пунктом назначения (сервером). Это не гарантирует, что клиент сам доверяет или данные верны. Подделка происходит в клиенте, до того, как произойдет запись (пользователь может манипулировать данными url или данными POST по своему усмотрению, изменяя цены, прежде чем они будут зашифрованы).

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

...