Проблемы безопасности jQuery GetJSON. Копирование URL и вставка в браузер - PullRequest
2 голосов
/ 08 июля 2011

Я использую вызов jQuery GetJSON на своей странице ASP. Это что-то вроде следующего кода:

$.ajax({
    url: myUrl/myPage.aspx?callback=BookARoom,
    dataType: 'json'
});

Это на самом деле приведет к тому, что в моей системе будет забронирована комната, но проблема в том, что если пользователь скопирует этот URL и вставит его в браузер, комната будет забронирована. Поскольку у него уже есть сеанс, я не могу его дифференцировать на страницах ASP. Как я могу предотвратить это?

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Здесь есть две проблемы.

Первая проблема: GET запросы должны быть безопасными.Есть много вещей, которые могут вызвать запрос GET.Если вы меняете состояние на основании запроса GET, ваш код опасно нарушен.Используйте POST.

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

0 голосов
/ 08 июля 2011

Чтобы ваш обычный пользователь не делал этого, потребуйте, чтобы он использовал POST вместо GET в качестве HTTP-глагола (требование должно быть указано на стороне сервера) и введите: «POST» должен использоваться в вашем вызове ajax.*

Чтобы ваш «продвинутый» пользователь не подделал его, короткий ответ: вы не можете.Есть способы обойти все, что вы можете придумать.Рассмотрите возможность использования токена CSRF, чтобы другие пользователи не могли встраивать ссылку в другой веб-сайт.

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