Обеспечение запроса ajax

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

ajaxpages/somepage.php?somevar=something&anothervar=something

если какой-либо другой пользователь решает просто перейти к тому, связывают себя (без сессии), они все еще получают тот же вывод ajax, который был предназначен для зарегистрированных людей.

так, очевидно, я оказываюсь перед необходимостью передавать данные сессии через то, когда я отправляю ajax запрос. у кого-либо есть какие-либо подсказки для лучшего способа сделать это? я никогда не делал этого прежде и использовал бы методы, которым доверяют, чем составил бы мое собственное.

9
задан asdasdsa 22 April 2010 в 05:50
поделиться

4 ответа

Используйте ту же проверку безопасности на страницах, которые обрабатывают запрос ajax.

2
ответ дан 2 November 2019 в 23:06
поделиться

Запросы ajax работают так же, как и любые другие запросы к вашему веб-сайту, и должны возвращать те же файлы cookie сеанса, что и запросы без ajax. На это указывается в этот вопрос . Если вы не получаете файл cookie сеанса, возможно, что-то еще не так.

5
ответ дан 2 November 2019 в 23:06
поделиться

Поскольку это страница PHP, я не понимаю, почему вы не смогли выполнить аутентификацию на стороне PHP. Если аутентификация прошла успешно, отправьте данные обратно. В противном случае отправьте обратно сообщение об ошибке. AJAX ничем не отличается от любого другого запроса.

2
ответ дан 2 November 2019 в 23:06
поделиться

Наличие вывода ajax не обязательно является уязвимостью. Это полностью зависит от того, какие данные передаются. Я не уверен, какую платформу вы используете, но на большинстве платформ разработки веб-приложений есть переменная сеанса, которая может поддерживать состояние между запросами.

Что вы должны иметь , так это способ пометить пользователя как вошедшего в систему со стороны сервера. В php это будет выглядеть так:

if(login($user,$password)){
   $_SESSION['logged_in']=true;
}

Затем вы можете проверить в файле заголовка, разрешен ли им доступ к странице:

if(!$_SESSION['logged_in']){
   header("location: http://127.0.0.1/");
   die();
}

(Если переменная не установлена, она также ложна.)

Есть о нескольких вещах, о которых нужно помнить. Это уязвимость:

if(!$_COOKIE['logged_in']){
   header("location: http://127.0.0.1/");
   die();
}

Пользователь может управлять $ _COOKIE, чтобы он мог сказать вам, что он вошел в систему.

Другая уязвимость:

if(!$_COOKIE['logged_in']){
   header("location: http://127.0.0.1/");
}

header () не уничтожает скрипт. Фактически, он все еще работает, поэтому он все равно будет выводиться, но не будет отображаться в браузере, вы все равно можете использовать netcat / telnet / wirehark для просмотра данных.

4
ответ дан 2 November 2019 в 23:06
поделиться
Другие вопросы по тегам:

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