Казалось бы, вроде ничего о кулинарии здесь не было, и вдруг — на тебе! А ведь речь пойдет действительно о печенье — 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.

Скачать плагин iodized_salt