Может быть, название плохо сформулировано, но не могло придумать лучшего способа сказать это.
В настоящий момент я работаю над системой входа (ничего не формально, просто экспериментирую) и планировал использовать PHPLiveX (библиотеку AJAX) для некоторых функций. В основном вы создаете некоторые функции PHP, которые затем вызывается через JavaScript. Вы можете добавить параметры (getElementById) в JavaScript, которые передаются в функцию PHP.
Я действительно хотел знать, можно ли просто вызвать функцию из JavaScript без шифрования пароля сначала, а затем позволить функции PHP зашифровать его (в этом случае SHA256). Можно ли перехватить данные, переданные через AJAX? Если да, то насколько это возможно?
Не более или менее безопасный, чем обычный HTTP-запрос POST, выданный браузером (как в <form>
),
«Исправить» для этого является то же самое «исправление» для запросов, отличных от AJAX, – используйте SSL.
Как отмечали другие, это не более опасно, чем отправка HTTP-сообщения из формы. На самом деле, это то же самое.
Но если HTTPS не является вариантом, вы всегда можете использовать схему вызова / ответа по незашифрованному соединению. В основном это работает следующим образом:
На самом деле это довольно просто настроить, как только вы получите эту идею. В Википедии есть дополнительная информация.
EDIT: Я заметил, что забыл упомянуть, независимо от того, успешна ли аутентификация, вы должны исключить вызов, независимо от того. Предоставление клиенту нескольких попыток по одному вызову может привести к проблемам безопасности.
Если вы отправляете пароль через AJAX или через обычную форму, он по-прежнему отправляется через HTTP POST
(надеюсь). Таким образом, вы не добавляете и не удаляете ничего разумного.
Единственный способ предотвратить перехват вашего пароля – это использовать SSL (через AJAX или нет).
Это так же безопасно, как наличие формы входа в систему, которая не защищена SSL, передается по кабелю, как и почти все форумы!
Убедитесь, что цель вашего вызова AJAX является надежной страницей HTTPS: //, и вы сделали ее такой же безопасной, как и любой другой отправкой той же информации, что и остальная часть вашего приложения. Большинство библиотек / фреймворков не ограничивают вас только HTTP: // для ваших вызовов AJAX.
Да, это можно прочитать. Как и все остальное без какого-либо уровня безопасности (см. SSL)
Чтобы убедиться в этом, запустите такой инструмент, как WireShark, как и ваши команды AJAX.
Насколько вероятно? Не очень, но пароль пользователя, вероятно, будет сохранен в чьих-то журнальных файлах в виде обычного текста. Если кто-то в конце концов его найдет, то это могут быть плохие новости. Еще в колледже мой сетевой класс имел доступ к некоторым (полу) причудливым маршрутизаторам. У нас были задания, в которых мы подписались на учетные записи на случайных сайтах. Когда мы это сделали, мы заметили некоторые очень страшные вещи в файлах журналов в маршрутизаторах. Для меня это было открытием для глаз, чтобы подумать о том, как отслеживается каждое сообщение и, скорее всего, где-то регистрируется.
AJAX-вызовы – это простой HTTP-запрос.
Он ведет себя как обычный HTTP-запрос, а также имеет все преимущества и недостатки. Это не безопаснее.
Чтобы ваши вызовы AJAX были безопасными, вы можете попробовать несколько способов:
Вы отправляете его в ясном виде, поэтому любой, кто обнюхивает / слушает / и т. Д., Клиентская сеть сможет легко увидеть пароль. Вызов AJAX – это просто старое HTTP-сообщение. Если вы хотите увидеть это в действии, запустите копию wirehark и сделайте запрос самостоятельно. Вы сможете увидеть пароль в HTTP-пакете.
Как уже упоминалось, SSL является лучшим решением здесь. Однако вы можете использовать пароль на стороне клиента. Если вы Google для этого, вы найдете множество реализаций javascript для md5.
Это небезопасно. Не отправляйте незашифрованные пароли. Очень вероятно, что в какой-то момент они будут перехвачены, у вас будет серьезная проблема.
Вот видео- пример захвата пароля telnet. Telnet отправляет в текстовом виде, и это прекрасно иллюстрирует основную проблему, возникшую у вас, если вы даже думаете об этом. Любой двухбитный скрипт kiddie может ломать простой текстовый пароль быстрее, чем вы можете так: «Боже мой, куда моя база данных?»
Открытый текстовый пароль, передаваемый через AJAX, будет таким же безопасным, как тот же пароль, который передается через обычную HTTP-почту. То есть AJAX использует HTTP, и поэтому его можно перехватить и понюхать. Лучше всего использовать HTTPS (SSL).
Для дальнейшего чтения в AJAX и безопасности я бы рекомендовал следующие чтения
черт возьми, вы меня волнуете. SSL не защищает от атаки MITM отравления арп. Было бы смертельно поклоняться SSL, как вы, ребята. У вас должен быть способ зашифровать пароль на стороне клиента, прежде чем он совершит хотя бы один прыжок, или даже новичок-хакер сможет перехватить пароль в виде открытого текста
Также необходимо знать о потенциальных уязвимостях безопасности при создании приложения, использующего Ajax.
На следующем сайте есть действительно хорошая информация об атаках Ajax и XSS или XSRF. http://www.isecpartners.com/files/isec-attacking_ajax_applications.bh2006.pdf
Не забывайте, что когда вы делаете удаленную функцию доступной для вызова javascript, пользователь может просто угадать вызов функции и изменить его для выполнения своих целей.