Что именно происходит, когда я набираю пароль в веб-браузере до того, как пароль будет отправлен из машины в сеть?
Что происходит, когда я набираю пароль в поле ввода пароля в форме на веб-странице (например, поле пароля Gmail) и затем нажимаю клавишу ввода. Я хочу понять процедуру, прежде чем браузер отправит ее с локальной машины в сеть. Например: на локальном компьютере веб-браузер сначала выполняет системный вызов, затем локальный компьютер выполняет некоторую обработку пароля, а затем отправляет его по сети. Я много искал в Google, но не нашел ничего полезного.
2 ответа
В общем, ничего особенного не происходит.
Пароль это просто HTML <input>
элемент. Это просто текстовое поле.
В большинстве случаев веб-сайты, для которых требуются пароли, отправленные в форме, используют HTTPS для шифрования отправленных данных (включая имя пользователя и пароль) обратно на сервер (если сайт не использует SSL, тогда пароль будет отправлен в незашифрованном виде).
Изменить: Согласно вики, SSL / TLS работает на уровне представления OSI, хотя эта статья SSL указывает, что SSL находится на уровне приложений TCP. AFAIK https - это просто http, работающий поверх SSL-соединения.
Согласно сообщению @John, традиционный способ отправки паролей заключается в предоставлении пользователю формы с именем пользователя и паролем. (Полная ссылка здесь)
<form name="input" action="https://somesite/login.asp" method="post">
Username: <input type="text" name="user" />
Password: <input type="password" name="password" />
<input type="submit" value="Submit" />
</form>
Эти данные формы будут отправлены обратно на сервер, который затем должен проверить входные данные перед проверкой аутентификации имени пользователя и пароля (обычно путем передачи одного или обоих полей через односторонний хэш, чтобы убедиться, что пароли не хранятся открытым текстом в базе данных).,
С точки зрения безопасности
- Хотя браузер будет "показывать" звездочки на элементе управления паролем, браузер все еще знает пароль открытого текста.
- Метод безопасных форм должен быть POST (method = GET появится в строке запроса)
- Сама страница формы должна была обслуживаться через https (поскольку в дополнение к шифрованию браузер проверяет сертификат сервера по домену, для истечения срока действия - для самой цепочки сертификации)
- и само действие формы должно использовать https:// url, чтобы гарантировать, что имя пользователя и пароль зашифрованы при передаче на обратном пути к серверу.
Одной из концепций, которая должна быть разработана, является причина, по которой браузер не "хэширует" или иным образом выполняет некоторую проверку подлинности на "стороне клиента" соединения, потому что сервер никогда не должен доверять браузеру / удаленному компьютеру. - исходный полный пароль должен быть отправлен удаленным клиентским компьютером.
Re: можно взломать пароль?
Общие атаки
- Keylogging - программное обеспечение, которое регистрирует нажатия клавиш пользователя, включая имена пользователей и пароли
- Фишинг - злоумышленник предоставляет пользователю страницу входа в систему сайта, которая выглядит как целевая страница входа в систему, пользователь может быть обманут, введя имя пользователя и пароль. Если настроенный пользователем файл DNS или LMHosts скомпрометирован, то URL-адрес для входа в систему может быть отображен как подлинный, даже если он обслуживается фишинговым сервером злоумышленника.
- Атака XSS (например, если на странице входа отображаются неподтвержденные записи комментариев пользователей на той же странице), злоумышленник может внедрить JavaScript, чтобы подключиться к любому количеству событий на странице, чтобы получить имена пользователей и пароли.
- При слабой проверке клиента и некоторой информации о структуре сервера атаки SQL-инъекций могут использоваться для полного обхода входа в систему, чтения данных из базы данных сервера (например, получения всех пользователей и паролей, если они хранятся в виде открытого текста), либо для повреждения или удаления. данные на сервере (но это атакует сервер, а не браузер)