21

Ответ на пост «Как на Пикабу случайный пользователь стал админом»

Вот такая история, как случайный пользователь стал админом крупной площадки из-за недостаточной внимательности и каламбура типизации php :)

Ответ на пост «Как на Пикабу случайный пользователь стал админом»
630

Как на Пикабу случайный пользователь стал админом

Вспомнилась курьезная, давно забывая инсайдерская история о Пикабу, годов так 2014-2015, решил поделиться.

Давным-давно Пикабу работал на php 5.3 и где-то в коде нужно было вывести блок с админскими инструментами, который должен был показываться только разработчикам сайта (на тот момент было всего 3 разработчика + админ). И вот проверку на разработчика мы сделали вот так

if (in_array($userName, array('admin', 'dev', 'dev.js', '0x00')) {

// какая-то админская опция тут...

}

Этот код проверял, есть ли ник текущего пользователя в массиве из 4 ников разработчиков. И если он там был, то пользователю выдавалась какая-то админская опция.

Дело в том, что на тот момент никто из нас не догадался, что php5.3 (и так было аж до 7й версии php) функция in_array работала с особым нюансом и случился курьезный момент: пользователю с ником 000000 (ну или похожий на него, точно не помню сколько нулей было) выдались админские права, так как in_array('000000', array('0x00')) в старых версиях php возвращал TRUE :) Т.е. php считал, что ник '000000' и '0x00' - это одно и то же.

Как на Пикабу случайный пользователь стал админом

Насколько помню про это сам пользователь сообщил.

Во внутренности работы этой функции в php не лез, но явно там было где-то приведение к числу, так как оно работает и на других парах, например in_array('123', array('0x7B')) также вернет TRUE, причем работает это как с десятичными числами в строке, так и с шестнадцатеричными и восьмеричными.

Исправлялось просто: нужно было третий аргумент в in_array всегда указывать TRUE, тогда php будет делать сравнение значений без приведения типа.

Вот такая история, как случайный пользователь стал админом крупной площадки из-за недостаточной внимательности и каламбура типизации php :)

Показать полностью 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества