Безопасность AJAX-запросов - PullRequest
5 голосов
/ 22 июня 2010

Просто сейчас я пишу проект, и я решил написать его с jquery и ajax запросами.

Единственное, я не знаю, достаточно ли это безопасно?

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

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

а как насчет безопасности?хейкер может найти способ изменить некоторые из моих if-else утверждений, и весь мой секьюрит будет тормозить.

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

Спасибо

Ответы [ 4 ]

12 голосов
/ 22 июня 2010

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

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

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

Обновление:

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

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


Резюме:

  • Отправлять только те данные, к которым клиент имеет доступ.
  • Проверка ввода пользователя на стороне сервера.
  • Никогда не доверяйте вводу пользователя.
6 голосов
/ 22 июня 2010

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

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

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

5 голосов
/ 22 июня 2010

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

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

2 голосов
/ 22 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...