Йодированная соль для печенья.
Казалось бы, вроде ничего о кулинарии здесь не было, и вдруг — на тебе! А ведь речь пойдет действительно о печенье — cookie и о соли — salt. Но съедобного в этом ничего нет. Речь о системе авторизации в WordPress и о безопасности.
Присказка. Вчера копался я с авторизацией в MU WP 1.5. Алгоримы там такие же мудреные, как и в WP 2.5, так что разница невелика. Если вам интересно, что нового в куках 2.5 по сравнению с более ранними, что за зверь SECRET_KEY, то можете почитать на офф.сайте или найти на более понятном языке, благо обзоров хватает. Если говорить двух словах, то хитрые куки теперь генерируются хешированием, причем в два этапа. Во время процедуры добавляется т.н. «соль» (salt) — бессмысленный набор символов, делающий расшифровку или фальсификацию если не невозможной, то, по крайней мере, очень затруднительной. Сделаны эти усложнения для того, чтобы злоумышленник, завладевший хешом админского пароля, не смог сгенерировать себе админские парольные куки, что можно было сделать с более ранними версиями WP (см. тут). Замечательно! Казалось бы.
Так вот. Я вчера занимался тем, что пытался скрестить ежа и ужа, то есть писал прибамбас, который бы позволял «залогиниться» в WP через логин стоящей рядом, ну, скажем так, CMS. Прибамбас получал из «своей» системы имя юзера и генерировал куки a la WordPress. В общем, получилось. Поздоровался в одном месте — и залогинен в другом. И вот тут я подумал, что если злоумышленник как-то подсунет XSS в наш любимый WP (ХЗ как, не силен я в этих нехороших штучках), то может стырить любимую админскую печеньку и захавать ее! Точнее, скормить админские куки своему броузеру, получив таким образом админку в полное свое распоряжение. Оно нам надо, такое счастье? Не надо, решил я — и пошел чесать репу.
Сия захватывающая процедура вылилась в плагин, который я, не мудрствуя лукаво, назвал «Йодированной солью», ибо суть его в том, что во время генерации «соленого ключа», то есть в функции wp_salt(), к результату подмешивается… не, не йод, но близко к том — IP клиента. В результате мы имеем куки, совершенно бесполезные для использования на другом компе. Ну разве что куки уведут вместе с адресом. Побочным эффектом является разлогинивание при смене IP.
Противопоказания — round-robin proxy и плохие телефонные линии с динамическим IP.
Поставил и сразу слетела админка. Пытаюсь зайти, а меня посылают на мой блог. =/ значит плагин не для меня)
Кончено, сразу слетела — куки-то уже не те. А вообще, немного выше я уже напоминал, что плагин писался в мае 2008 года.
Проверил. Не мешает.
Здравствуйте, установил плагин, так как лучше предохраниться, чем лечиться… Но заметил один косячек, при чем не в смысле сигаретный…
В общем, когда плагин установлен, отложенные на публикацию в будущем посты — не публикуются!
Версия wp 2.7 от lecactusa…
Заранее спасибо за ответ
Странно, что вообще работает 🙂 Плагин писался под 2.5 в мае 2008 года. Думаю, разработчики WP продолжают совершенствовать систему безопасности, а не только админку раскрашивают. Впрочем, я и с 2.5 не проверял совместимость с отложенной публикацией (и еще с кучей фишек, которые не использую). Будет время и желание — проверю. Хотя, и сам по себе механизм отложенной публикации — еще та песТня.
И действительно. Спасибо!
Спасибо за плагин, в нем небольшая ошибка — неправильно написан адрес твоего блога
Да, при прощании куки чистятся. Но если злоумышленник успел их умыкнуть, то может воспользоваться в любое время — движок-то не знает, живы ли ваши куки, и ему все равно, кто предъявил «правильную» куку.
А что происходит при «прощании» с сайтом? Браузер просто подчищает Cookie, оставленные WordPress и злоумышленник не может ими воспользоваться?
Адрес меняется только при новом подключении к Интернету и до следующего подключения не меняется.
В общем, тогда ясно, значит будем пользоваться. Спасибо за плагин! Занесу его в список обязательных.
Все зависит от того, как часто меняется адрес и сколько времени Вы уделяете администрированию блога. Если смена адреса будет происходить во время администрирования, то это очень неприятно. А если в «нерабочее время» — так и бог с ним. Считается, что из соображений безопасности нужно прощаться всякий раз по окончанию работы с сайтом.
То есть, если у меня динамический IP, то мне нет смысла ставить плагин?