безопасность ajax? - PullRequest
       2

безопасность ajax?

2 голосов
/ 06 мая 2010

Когда я оглядываюсь назад на свои коды, написанные ранее, я обнаружил нечто ужасно плохое Всякий раз, когда я хочу удалить запись в базе данных, я делал это так:

$.post("deleteAction.do",{recordId:10});

Я не могу предотвратить посещение злоумышленником моего URL-адреса моей базы данных напрямую:

deleteAction.do?recordId=10 

Какое решение для такой проблемы?

Ответы [ 4 ]

3 голосов
/ 06 мая 2010

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

  1. Добавьте дополнительные проверки на стороне сервера, чтобы пользователи не могли удалять другие данные, кроме своих.
  2. Вместо целых чисел вы также можете использовать что-то вроде guids или другой идентификатор, который трудно изменить (читай: непредсказуемый). Это препятствует тому, чтобы «умные головы» пытались сломать ваше приложение.
2 голосов
/ 06 мая 2010

Неважно, используете ли вы Ajax или нет. Если URI делает что-то конфиденциальное на сервере или предоставляет конфиденциальные данные, вам необходимо защитить его. Обычно с некоторой формой аутентификации + авторизация. Техника, основанная на куки, нормальна для этого. Особенности его реализации зависят от дизайна вашей серверной системы.

Кроме того, вы не должны разрешать запросы GET для небезопасных действий . Поскольку ваш запрос является POST, но вы используете пример проблемы GET, это говорит о том, что вам просто нужно добавить «Это запрос POST?» проверьте скрипт на стороне сервера. Обратите внимание, что самой защиты недостаточно, злонамеренный пользователь может делать произвольные запросы POST почти так же легко, как и произвольные запросы GET. (Что возвращает нас к Authen / Authz)

1 голос
/ 06 мая 2010

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

1 голос
/ 06 мая 2010

Ваш серверный код должен проверять текущего пользователя, вошедшего в систему, и убедиться, что у него есть разрешение на удаление материала. Это предотвратит злонамеренные действия со стороны незнакомцев, но потребует добавления некоторых элементов авторизации / разрешения в ваше веб-приложение.

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