SimBioT19
@SimBioT19
{{ user.about }}

Как защититься от редактирования js?

Допустим у меня отправляется форма ajax, в ней помимо данных, также имеется ip-адрес человека, но его же можно легко изменить! Возьмут, скажем, поставят ip неизвестно кого и как тогда "поймать" самозванца? Также могут зациклить отправку данных, создать нагрузку на сервер. Как с этим бороться? Ясное дело, что можно использовать сессии или капчу, но возможно ли без этого, обойтись? Вернее, есть ли другие варианты и как всё-таки можно получить ip-адрес пользователя так, чтобы он не смог его изменить (при том, что форма отправляется через ajax)?
  • Вопрос задан
  • 425 просмотров
Пригласить эксперта
Ответы на вопрос 5
@vilgeforce
Раздолбай и программист
Никак. Любые данные полученные от пользователя могут быть подменены. Получение IP адреса делается на сервере который точно знает откуда на самом деле пришел запрос.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Возьмут, скажем, поставят ip неизвестно кого и как тогда "поймать" самозванца?

А еще это можно организовать на сетевом уровне, скажем через прокси.

А еще у некоторых пользователей (например тех кто сидят через 3G или публичные wifi сети) ip динамический.

Также могут зациклить отправку данных, создать нагрузку на сервер

С одной машины - не серьезно. В любом случае есть rate-limit и это дело можно настроить в nginx. В случае с прокси или распределенной атакой не поможет.
Ответ написан
opium
@opium
Просто люблю качественно работать
Берите из серверных переменных его там не подменить, а если подменил то обратно ему пакет не улетит.
Ответ написан
Комментировать
IonDen
@IonDen
JavaScript developer. IonDen.com
Очень просто, сервер не должен доверять клиенту вообще и всегда полностью проверять все входящие данные и уж тем более не доверять делать клиенту какие-либо значимые бизнес-операции.
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Шифруем IP и формируем hash-подпись своего сервера и отдаём форму в браузер с этими данными (тип hidden или внутрь URI в action, как параметры).
2. После нажатия Submit, форма отправляет запрос на целевой URL с шифрованным IP и hash-подписью.
3. При получении данных формы - целевой URL проверяет подпись и раскодирует IP.
4. Сверяет реальный IP с шифрованным и подпись.
Если все ОК - то форма передана успешно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы