Веб-проект:
// Самое корректное удаление регистрации глобальных переменных ;)
if (ini_get('register_globals')) die('register_globals включены! Это плохо! Необходимо добавить в .htaccess строку: php_flag register_globals off');
Веб-проект:
// Самое корректное удаление регистрации глобальных переменных ;)
if (ini_get('register_globals')) die('register_globals включены! Это плохо! Необходимо добавить в .htaccess строку: php_flag register_globals off');
За то время, что я считаюсь опытным пользователем, я повидал много любопытных и не очень решений в области безопасности. Сегодня меня порадовала отечественная социальная сеть, которая не устаёт подчёркивать, как сильно она заботится о защищённости учётных записей своих пользователей: даже ввела привязку к номеру мобильного телефона, чтобы владелец всегда мог вернуть себе аккаунт, даже если тот был похищен злобными хакерами.
Я зашёл к себе на страницу через мобильный браузер. Меня встретили надписью:
Вы пытаетесь зайти под именем <такого-то> из необычного места. Чтобы подтвердить, что вы действительно являетесь владельцем страницы, пожалуйста, укажите последние четыре цифры номера мобильного телефона…
А дальше — не верю своим глазам:
…В случае, если вы по какой-либо причине не можете вспомнить номер, к которому привязана ваша страница, вы можете сменить этот номер. Для этого нажмите сюда.
Нажимаю — действительно, открывается текстовое поле и кнопка «Сменить номер». Браво, товарищи разработчики! С нетерпением жду появления аналогичной страницы в форме логина:
Вы ввели неправильный пароль. В случае, если вы по какой-либо причине не можете вспомнить пароль к вашей странице, вы можете сменить этот пароль. Для этого нажмите сюда.
У силовой госконторы имеется маленький сайт с новостями и обратной связью, куда можно слёзно и анонимно «настучать». В обычный будний день от высшего руководства приходит бумага с жалобой, в которой человек рассказывает, что обратная связь не работает, руководителям по барабану, и вообще он очень обижен и оскорблён. Бумага требует обратного отзыва, начальство поднимается на уши. Я, пребывая в шоке, демонстрирую руководству, что всё исправно работает: жалобы поступают на специальный электронный ящик.
Начинаем искать «анонима», через час находим. В ходе беседы в стиле «ни единого разрыва» с чередой угроз и воплей начинаю понимать суть. Как оказалось, после ввода огромного сообщения, написанного в порыве ярости, дядя с желчью на губах сразу тыкал кнопку «Отправить». После этого страничка требовала ввести код подтверждения. «Аноним», пребывая в состоянии когнитивного диссонанса, не успокаивался и продолжал фанатично тыкать «Отправить». После пятого щелчка страница становилась девственно чистой, происходил нервный срыв, и цикл повторялся. Только после трёх циклов борец за справедливость решил поступить по старинке.
Замутили наши инженеры с дизайнерами новый интерфейс для пользовательcких страниц на сайте. Красивый, навороченный, детально настраиваемый через длинный список чекбоксов. В тот же день звонит клиент:
— У меня со страницы пропала вся моя реклама!
Лезу в настройки нового интерфейса, проматываю до страницы с настройками рекламы — все галочки стоят. Иду к одному продвинутому коллеге, к другому — все подтверждают, что галочки на месте.
Делать нечего — пишу инженерам. Ответ примерно следующий:
— Вы что, рекламщики, вообще читать разучились?! Там же напротив галочки написано: «Запретить показ рекламы». Значит, она должна быть выключена, а не включена!
Сижу теперь в смешанных чувствах. С одной стороны, стыдно перед инженерами за себя и коллег, что невнимательно читали. А с другой — ну вот какого художника было менять значение на отрицательное и прятать среди двух десятков положительных?
Сайты в правительственном домене .gov.страна. Ресурсы с информацией по тендерам пестрят многотысячными заказами на разработку информационных порталов и систем управления с веб-доступом к специальным базам данных. За такие заказы берутся энтерпрайзные конторы с внушительным послужным списком и списком услуг, в котором не только разработки шаблонов для «джумл» и «вордпрессов», но и услуги по осуществлению аудита, построения систем защиты данных с ограниченным доступом, и прочее, прочее, прочее.
Когда же, загружая официальный документ с разработанного энтерпрайзной конторой новенького, с иголочки, сайта, абсолютно ненамеренно вытерев в адресной строке всё, кроме домен.gov.страна/files/, видишь листинг каталога веб-сервера, уже становится нехорошо.
Когда, следом заглянув в robots.txt, видишь в списке запрещённого ботам каталог популярного визивиг-редактора, к горлу подкатывает ком: «Это же крупная государственная контора, этого не может быть!»
Когда далее находишь в каталоге этого редактора веб-интерфейс плагина для загрузки файлов, не прикрытый даже банальной http-авторизацией, невольно вырывается истерический хохот: «Я могу загружать файлы? Это сон? Так не должно быть!» Но версия загрузчика настолько стара, хоть и свободна-открыта, что может благодаря уязвимостям трёхлетней давности заливать что угодно — хоть .exe, хоть .php.
Торопишься написать письмо веб-мастеру, описываешь всё в мельчайших деталях, отправляешь, ждёшь ответа — час, два, полдня, день… Ответа нет, изменений на сайте тоже. Будний день.
Минуты сомнений. Статья 361 УК? Но я же не преодолевал никаких средств защиты, их просто не было на моём пути! Потемнение разума на одно мгновение — и ты уже видишь Ubuntu на третьем ядре, не обновлённом после обнаруженной в январе уязвимости Mempodipper, установленный на сервер (sic!) KDE, энтерпрайзная БД Oracle, несколько дампов — наверное, бэкапы. Ну, хоть не совсем отсталые админы. Хотя…
В домашних каталогах админов — гигабайты видео (wget со ссылками в истории команд), музыка на любой вкус, каталог games на пятнадцать гигабайт. «Герои Голд»? Не, не играл в такое. Ничего не трогаю, ничего не удаляю, ничего не сливаю, выхожу, оставив записку на видном месте.
Письмо-ответ от вебмастера так и не пришло. Радует, что сайт таки прикрыли через несколько дней — видимо, при помощи rm -rf /*. Теперь моя совесть чиста.
Ребята, если вы узнали себя, не стесняйтесь — давайте спишемся, встретимся за бокалом хмельного напитка вечерком. Поскольку «спасибо» я не дождался, то вы угощаете. За беседой я расскажу вам, у кого из ваших коллег по правительственным сайтам до сих пор есть или была такая же фигня, а вы мне — как с таким уровнем знаний, умений и профнавыками получать такие заказы и такую работу. Буду ждать.
Я веб-дизайнер. Неделю назад общались с клиентом по скайпу, оговаривали детали, каким он хочет видеть сайт и так далее. В итоге пришли к выводу, что в логотипе нужно обыграть фамилию.
Клиент не торопил, поэтому всю неделю я заканчивал предыдущий проект. И вот настало время взяться за новый заказ. Так, что же там за фамилия была?.. Лезу в скайп, открываю историю сообщений. Негусто. Тут явно
Помню, что общался только по телефону и скайпу, но себе уже не очень доверяю. Проверяю почту — нет, не было ничего. Значит, скайп! Ползу в AppData\Roaming\Skype. Ага, chatsync — наверное, то. Открываю — иероглифы. Пробую кодировки — лажа. Зашифровали, демоны!
Ничего, Гугл в помощь. На
Не, клиенту звонить — не вариант. Совсем не вариант. Звонить… Телефон… «Сообщения → Входящие»… Вот же она, родимая!
Честь мундира спасена. Можно приниматься за работу.
Зашёл
— Нда, какой ты стал жестокий с этой работой… Ты бы отдохнул, что ли, а то только убивать тебе и убивать
Начинаю судорожно искать причину вывода. Взгляд падает на слишком частые вызовы die(); в коде. Баголовство было в самом разгаре…
На неделе занимался оптимизацией одного очень убогого ресурса: треть сайта в CP1251, половина в UTF-8, остаток в KOI8-R, и всё это сопровождается постоянными iconv(). Стоит ли говорить о промышленных поставках отборных матюгов при исправлении всего этого?
Но речь не о том. Вспомнился случай, произошедший в мои эникейские годы. Утро понедельника, звонок на внутренний номер:
— Доброе утро! У нас тут буквы волосатые, а вчера нормальные были!
Оказалось, что понедельник у конкурентов тоже был несладким: в заголовке их страницы не была указана кодировка.
Работала над проектом сайта. Днём — учеба, ночью — работа. И вот возвращаюсь я домой, иду по виадуку в сторону вокзала и вижу, что надпись на вокзале превратилась в абракадабру. С мыслями «Ёшкин кот, кодировка слетела!» судорожно тянусь к мышке…
На буквах, полностью имитируя слетевшую кодировку для уставших от мониторно-клавиатурных упражнений глаз, сидели голуби.