Безопасность запросов Ajax

Сейчас я пишу проект, и я решил записать это с jquery и ajax запросы.

только вещь, я не знаю, это достаточно безопасно?

например, когда я проверяю имя пользователя при регистрации нового пользователя, я использую jQuery ajax запрос,

я получаю массив существующих имен пользователей от дб (с json) и затем проверяю, если new_username нет inArray() из существующих usernames, я выполняю другой запрос и регистрирую пользователя.

но что относительно безопасности? хакер meybe может найти способ изменить часть из моего if-else операторы, и целый мой securite будут тормозить.

возможно, Вы поможете мне понять эту ситуацию?

Спасибо

5
задан Marcel Korpel 22 June 2010 в 16:50
поделиться

4 ответа

Почему вы реализуете любой этой клиентской стороны?

Вы должны отправить имя пользователя / пароль по HTTPS в запросе AJAX и заставить сервер ответить только данными, необходимыми для пользователя, чтобы двигаться дальше, не весь список имен пользователей.

Даже если оставить в стороне безопасность, что, если у вас миллионы пользователей? Вы собираетесь отправить этот список всем клиентам, чтобы они вошли в систему?

6
ответ дан 18 December 2019 в 06:21
поделиться

Ajax не заменяет код на стороне сервера. Хотя с помощью ajax можно реализовать вход в систему и регистрацию, вам все равно придется проверять и сохранять данные на сервере.

Более разумная реализация могла бы просто отправить на сервер https-запрос, содержащий имя пользователя и пароль, на который сервер ответил бы положительно или отрицательно.

5
ответ дан 18 December 2019 в 06:21
поделиться

(Далее я предполагаю, что имя пользователя - это идентификатор, с которым пользователь может войти в систему, а не какой-то псевдоним;))

  1. Получать все имена пользователей в формате JSON - это плохо. Тогда злоумышленник немедленно получает все зарегистрированные имена пользователей !
    Просто отправьте имя пользователя на сервер, подтвердите его там и отправьте либо «действительный», либо «недействительный» в качестве ответа. То есть проверьте доступность на стороне сервера .

  2. Всегда проверять ввод пользователя на стороне сервера . JavaScript можно отключить.

Обновление:

Не имеет значения, задействован jQuery или нет. Все, что вы отправляете клиенту (и не хешируется или зашифровано ) , может быть прочитано клиентом , это не имеет значения будь то XMLHttpRequest или "нормальный" запрос.

Вы бы отправили HTML-таблицу со всеми именами пользователей любому посетителю вашего сайта? Надеюсь, что нет :)


Резюме:

  • Отправлять только те данные, к которым у клиента есть доступ.
  • Проверять ввод данных пользователем на стороне сервера.
  • Никогда не доверяйте вводу пользователя.
12
ответ дан 18 December 2019 в 06:21
поделиться

Безопасность - это одна из тех вещей, которые лучше всего делать на стороне сервера, если это возможно. Мой типичный подход к входу в систему AJAX заключается в отправке имени пользователя и хэшированного пароля MD5 или SHA1 в метод на сервере, который затем позаботится обо всех деталях входа. Детали этой реализации будут зависеть от вашей технологии на стороне сервера, но большинство фреймворков для веб-приложений имеют средства для этого. Возможно, даже существуют решения, включающие библиотеки Javascript для работы на стороне клиента.

2
ответ дан 18 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: