2011-08-04 5 views
12

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

+0

Как он отличается? в конце концов, это всего лишь HTTP-запрос, переданный по протоколу, больше сосредоточиться на инкапсулировании данных с большей проверкой на стороне сервера! – Arpit

ответ

9

Я не могу придумать никаких последствий для безопасности при использовании Ajax для обработки входа и выхода из системы. Неважно, что вы отправляете туда и обратно (до тех пор, пока вы не отправляете текстовые пароли от сервера к клиенту) между боковым уровнем ajax и sever, потому что сеанс будет тем, который будет удерживать состояние авторизации.

Однако вам все равно придется обновлять страницу или перенаправлять, чтобы показать соответствующий контент только авторизованному пользователю. Поэтому я не думаю, что Ajax будет эффективен в этой конкретной ситуации.

+4

Фактически вы отправляете от клиента к серверу пароли в текстовом виде (за исключением страниц https). Однако вы будете наказаны, если вы отправляете текстовый пароль ** с сервера на клиент **. –

+0

@Clement: Вот что я имел в виду! Я отредактирую, чтобы было ясно. – Shef

+0

Нет, я могу просто загрузить содержимое, которое должно быть загружено с помощью запроса ajax. Я могу просто загрузить контейнер, который изменит содержимое (на стороне сервера) и отправит другой контент (соответствующий контент). – Qchmqs

19

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

AJAX является так безопасно, как обычной старой формой + обновлений страницы. В конце концов, это всегда HTTP-запрос. Почему вы так думаете ?

Однако, с точки юзабилити, убедитесь, что люди, которые отключили javascript, могут войти в ваше приложение.

Обязательно используйте POST метод, чтобы отправить запрос AJAX, так как GET запросы, и их Params (таких как, скажем, простой текстовый пароль) может закончиться в журналах веб-сервера, unles вы используя HTTPS.

Юзабилити

В Grégoire указал на это:

Кроме того, из точки практичности, автополный не будет работать для AJAX форм на хроме, так и для АЯКС загруженных форм в Firefox. Браузеры даже не захотят запомнить ваш пароль

+1

Также из точки юзабилити автозаполнение не будет работать для форм AJAX на хроме и для загруженных форматов AJAX в firefox. Браузеры даже не захотят запомнить ваш пароль. – greg0ire

+0

@ greg0ire right, я переживаю в эти дни, и это не очень смешно :(Редактирование, чтобы добавить ваше замечание. –

+3

Я думаю, что в наше время предложение «убедитесь, что люди, которые отключили javascript, могут войти в ваше приложение», должны быть изменен. Я не могу представить себе какое-либо серьезное веб-приложение, которое работает без javascript. –

1

GET или POST против вызова ajax имеют одинаковый набор угроз безопасности. Тот или иной не является неявным рискованным.

+2

Запрос GET может оказаться в журналах веб-сервера вместе с паролями обычного текста:/ –

+0

@ clement: Конечно, но это верно, независимо от того, выполняется ли запрос через форму или ajax. – Johan

+2

Правильно, поэтому еще более ложно, что GET или POST имеют одинаковый набор рисков безопасности. –

0

Ну Аякса сообщения безопасны

Все зависит от вашего кодирования вас есть код имея в виду все возможные атаки, которые могут произойти

использовать AJAX только для передачи данных и делать все проверки подлинности в PHP и вернуть успешное сообщение

0

Вы можете использовать AJAX с SSL-контейнером (HTTPS). Но страница отправителя также должна быть зашифрована. из-за перекрестной политики домена.

2

Вход через ajax POST должен быть безопасным, если у вас есть способ предотвратить атаки XSRF. Это можно сделать, установив заголовок X-CSRFToken в свой запрос ajax. На стороне сервера у вас должно быть какое-то промежуточное программное обеспечение для проверки и проверки вашего токена CSRF из заголовка.

Вы можете установить маркер CSRF в печенье, а затем запросить его и установить его в заголовке:

вар csrftoken = $ .cookie («csrftoken»);

xhr.setRequestHeader («X-CSRFToken», csrftoken);

(я использовал jquery cookie library here to illusrtate)

Смежные вопросы