LINUX.ORG.RU

Как происходит Авторизация через HTTPS в Wordpress ?

 , ,


1

2

Здравствуйте!
Настроил свой сайт (Wordpress) на работу через ssl.
При этом страница ввода логина/пароля загружается не по безопасному соединению! И только после нажатия кнопки Войти - уже следующая страница загружается по https. То же происходит и со страницей регистрации.
Т.е. получается, что данные с этих страниц не шифруются ?!
Дальше все последующие страницы (после регистрации/авторизации) загружаются по https.
При этом, считается, что шифрованное соединение сильно грузит сервер.
Есть идея использовать плагин (назыв. CCS-HTTPS), который позволяет загружать по https только те страницы сайта, которые указаны в его настройках, остальные идут по http.
Вопрос: указываем в настройке плагина загружать по https страницу входа и следующую за ней?
Как работает авторизация/регистрация в Wordpress?
Заранее благодарен за ответы!

В современных реалиях SSL не нагружает. Да и вообще, делай редирект с http на https сервером.

anonymous ()

Т.е. получается, что данные с этих страниц не шифруются ?!

А какаие там данные? Форма авторизации в html? Эти данные и так любому доступны) Главное непосредственно пароль и логин шифровать которые запросом передаются серверу.

TDrive ★★★★★ ()
Ответ на: комментарий от anonymous

Страница с формой грузится по http, из нее посылается запрос на https.

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

<div class="left-box">

	<form action="https://mydomain.org/vhid/" method="post" class="loginform" id="login-form">
		
	<p>
	<label for="login_username">Имя пользователя:</label>
	<input type="text" class="text required" name="log" id="login_username" value="" />
	</p>

	<p>
	<label for="login_password">Пароль:</label>
	<input type="password" class="text required" name="pwd" id="login_password" value="" />
	</p>

	<div class="clr"></div>

	<div id="checksave">

	<p class="rememberme">
	<input name="rememberme" class="checkbox" id="rememberme" value="forever" type="checkbox" checked="checked" />
	<label for="rememberme">Запомнить меня на этом компьютере</label>
	</p>

	<p class="submit">
	<input type="submit" class="btn_orange" name="login" id="login" value="ВХОД &raquo;" />
	<input type="hidden" name="redirect_to" value="http://mydomain.org" />	<input type="hidden" name="testcookie" value="1" />
	</p>

	<p class="lostpass">
	<a class="lostpass" href="https://mydomain.org/obnovlenie-parolya/" title="Сброс пароля">Забыли пароль?</a>
	</p>

	<p class="register"><a href="https://mydomain.org/zaregestrirovatsa/?redirect_to=http%3A%2F%2Fmydomain.org">Регистрация</a></p>
								
</div>
Это код страницы после того, как она была загружена повторно, после нажатия кнопки ВХОД, а логин и пароль введены небыли. После этого она загрузилась уже по https, и все ссылки на ней тоже https.
Но когда эта страница открывается пользователем в первый раз, то загружается она по http и все ссылки на ней - кроме ссылки во второй строке этого кода - http.
Имеет ли это значение?
Правильно ли я понимаю механизм авторизации в Wordpress и вообще:
с зашифрованной страницы по зашифрованному соединению передается логин и пароль на сервер, который в ответ высылает по зашифрованному соединению куку, которая устанавливается в браузер клиента и в дальнейшем служит для его идентификации. Если в дальнейшем не передается никаких конфиденциальных данных, то смысл в поддержании зашифрованного соединения отсутствует. Т.е. для сбережения конфиденциальности клиента мы должны защитить передаваемый им на сервер логин и пароль, и передаваемую в ответ сервером куку. На этом можно считать, что необходимые условия конфиденциальности выполнены. Так ли это?

san-sanych ()
Ответ на: комментарий от san-sanych

Имеет ли это значение?

Имеет в части «кроме ссылки во второй строке этого кода», т.к. это именно адрес для аутентификации, т.е. сообщение будет передано по зашифрованному каналу.

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

Как вордпресс должен определять конфиденциальные ли данные передаются?

Т.е. для сбережения конфиденциальности клиента мы должны защитить передаваемый им на сервер логин и пароль, и передаваемую в ответ сервером куку. На этом можно считать, что необходимые условия конфиденциальности выполнены.

Раньше такая реализация была у гугла. Логин и пароль пользователя узнать из подслушанного трафика было нельзя, но никто не мешал послушать куку, установить ее себе в браузер и покопаться в чужой почте.

anonymous ()
Ответ на: комментарий от anonymous

И да, ты, похоже, решил, что после того, как кука передана клиенту, сервер телепатически идентифицирует клиента (ну куку-то мы ему передали). Эта кука передается с каждым запросом обратно, именно так сервер идентифицирует клиента.

anonymous ()
Ответ на: комментарий от xtraeft

Ты http://codex.wordpress.org/Administration_Over_SSL прочитал уже?

Канэшна :)
С английским у меня плохо и я не увидел там ответа на заданные мной вопросы.
Может приведете цитаты?
Сервер настроен, wp-login и wp-admin TRUE в wp-config.php прописаны. Админка сайта полностью работает в https.
Вот заставить страницу авторизации и регистрации грузится в первый раз по https без вышеназванного плагина не удалось, но как говорят мне здесь - это не нужно.
Что еще упустил?

san-sanych ()
Ответ на: комментарий от anonymous

И да, ты, похоже, решил, что после того, как кука передана клиенту, сервер телепатически идентифицирует клиента (ну куку-то мы ему передали). Эта кука передается с каждым запросом обратно, именно так сервер идентифицирует клиента.

Мдя. Значит дальнейшее поддержание https имеет значение для того, чтобы сохранить эту куку в тайне. Так?
В файле wp-config.php есть такой вот раздельчик:

/**#@+
 * Уникальные ключи и соли для аутентификации.
 *
 * Смените значение каждой константы на уникальную фразу.
 * Можно сгенерировать их с помощью {@link https://api.wordpress.org/secret-key/1.1/salt/ сервиса ключей на WordPress.org}
 * Можно изменить их, чтобы сделать существующие файлы cookies недействительными. Пользователям потребуется снова авторизоваться.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'впишите сюда уникальную фразу');
define('SECURE_AUTH_KEY',  'впишите сюда уникальную фразу');
define('LOGGED_IN_KEY',    'впишите сюда уникальную фразу');
define('NONCE_KEY',        'впишите сюда уникальную фразу');
define('AUTH_SALT',        'впишите сюда уникальную фразу');
define('SECURE_AUTH_SALT', 'впишите сюда уникальную фразу');
define('LOGGED_IN_SALT',   'впишите сюда уникальную фразу');
define('NONCE_SALT',       'впишите сюда уникальную фразу');

/**#@-*/

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

san-sanych ()
Ответ на: комментарий от anonymous

В сети опубликованы 2 пароля от учетных записей на сервере san-sanych.

О чем речь? Где в сети опубликованы пароли моей учетной записи?

san-sanych ()
Ответ на: комментарий от san-sanych

Это используется для генерации кук. Третьему лицу не нужно ничего вычленять. Он просто берет куку и передает ее серверу. Сервер по куке определяет пользователя (жерта ли это или злоумышленник, не важно). Все.
Слушай, чувак, я ваще не знаю этого твоего вордпресса, так работают все сайты. Те, которые так не работают, скорее всего не работают совсем. Тебе не нужно придумывать ничего нового, просто делай как сказано в документации. Когда некомпетентный человек пытается изобрести очередную суперсукурную фундервафлю, то случается гарантированный фейл. Сто раз уже проходили. Капча 100 подтверждает.

anonymous ()
Ответ на: комментарий от anonymous

Это используется для генерации кук.

Все ясно - после авторизации, для поддержания секьюрности, соединение с сервером должно оставаться зашифрованным.
Спасибо всем ответившим.

Что там про пароли san-sanych?

san-sanych ()
Ответ на: комментарий от anonymous

Неудачная шутка в свете последних событий, связанных с yandex, mail.ru, и google

Дело в том, что я один раз менял пароль san-sanych и в природе их существует именно два - старый и новый. Непохоже на шутку.

san-sanych ()
Ответ на: комментарий от san-sanych

Что еще упустил?
define('FORCE_SSL_ADMIN', true);

Если не поможет, то пункт

Rewrite Rules For The Insecure Host

xtraeft ★★☆☆ ()
Ответ на: комментарий от MrClon

И адрес куда POSTится логин и пароль. Человек-посередине может быть и активным.

Этот адрес и так можно посмотреть зайдя на сайт и нажав кнопку «авторизация»

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

Смпециально-же написал что может существовать активный посредник. Подменяешь адрес куда отправляется пароль на свой собственный (или просто заменяешь https на http) и невозбранно получаешь пароль.

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Да такую возможность я упустил. Но тогда нужно шифровать весь сайт целиком, что бы исключить подмену ссылок «вход в лк» и тп.

TDrive ★★★★★ ()
Ответ на: комментарий от TDrive

Если по хорошему, то да. Но если защитить нужно в основном пароль админа или контент-менеджера то можно просто привыкнуть проверять глазами какой там протокол сейчас.
В случае когда по https только постятся данные авторизации посмотреть глазами какой используется протокол просто негде.

Есть какой-то стандарт (забыл название) позволяющий серверу указать клиенту можно-ли заходить на этот сайт по http, или только по https (суть в том что-бы браузер, вместо человека, помнил что на этот сайт можно ходить только по https). Может он позволяет и для отдельных урлов политики задавать.

MrClon ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.