Подтвердить что ты не робот

Может ли злонамеренный хакер изменить скрытую переменную

Я знаю, что POST можно подделать с точки зрения происхождения домена, но как быть в состоянии изменить переменные скрытых переменных POST в моем HTML? Меня беспокоит, что кто-то может изменить значение "сумма" в моей форме PayPal:

<input type="hidden" name="amount" value="1.00">

:

<input type="hidden" name="amount" value="0.01">

или что-то подобное. Спасибо.

4b9b3361

Ответ 1

Да, для всех, кто может изменить переменные формы, тривиально легко. Являются ли они GET или POST, не имеет значения вообще.

Правило веб-безопасности №1: никогда не доверяйте никаким пользовательским вводам. Также указано, что "все пользователи - злонамеренные хакеры" или их вариант.

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

Ответ 2

Да, это очень просто сделать с помощью инструментов инспектора браузера и JavaScript.


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

Ответ 3

Да, это значение можно изменить с помощью javascript. Если вы не практикуете использование javascript, вы также можете выполнить тест с помощью инструментов разработчика Google Chrome.

Infact это одна из основных причин не полагаться на ввод пользователя.

Ответ 4

Забудьте javascript и инструменты для браузера. Пожалуйста, поймите, что я могу отправить любые аргументы cookie, POST и GET (пары ключей и значений), которые я хочу, независимо от того, является ли это для них формой. (См. cURL)

Фрэнк сказал: "В магазине вы бы очень редко видели, как клиенты заполняют свои тележки, а затем рассказывают кассиру, сколько они должны платить".

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

Ответ 5

Да. Это ухудшается, потому что им даже не нужно менять свою страницу, чтобы сделать это. Пользователь может использовать любой текстовый редактор для создания html-страницы с формой, полной текстовых полей, загружать ее с локального диска, заполнять их тем, что они хотят, и нажимать submit. OTOH, который будет отображаться в некоторых значениях заголовка.

Или, если они действительно определены, они могут подключаться к порту 80 на вашем сервере через telnet и подделывать весь HTTP-запрос, включая заголовки.

Существует не один байт входящего запроса, которому вы можете доверять.

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

Ответ 6

В этом случае пусть они изменят значение, если захотят, и пусть они платят вам 0,01 доллара. Но тогда, когда вы получите IPN Paypal (Instant Payment Notification), он будет включать в себя цену, которую они заплатили; проверьте, что против вашей базы данных товаров, чтобы убедиться, что она правильная цена.

Если это не правильная цена, не отправляйте/не отдавайте товар. Вы заработали $0.01!