bash.im ithappens.me zadolba.li

Веб-разработка

8658

Фу таким быть

Веб-проект:

// Самое корректное удаление регистрации глобальных переменных ;)

if (ini_get('register_globals')) die('register_globals включены! Это плохо! Необходимо добавить в .htaccess строку: php_flag register_globals off');

8536

Верим вашим честным глазам

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

Я зашёл к себе на страницу через мобильный браузер. Меня встретили надписью:

Вы пытаетесь зайти под именем <такого-то> из необычного места. Чтобы подтвердить, что вы действительно являетесь владельцем страницы, пожалуйста, укажите последние четыре цифры номера мобильного телефона…

А дальше — не верю своим глазам:

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

Нажимаю — действительно, открывается текстовое поле и кнопка «Сменить номер». Браво, товарищи разработчики! С нетерпением жду появления аналогичной страницы в форме логина:

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

8482

С холодной индифферентностью капчи

У силовой госконторы имеется маленький сайт с новостями и обратной связью, куда можно слёзно и анонимно «настучать». В обычный будний день от высшего руководства приходит бумага с жалобой, в которой человек рассказывает, что обратная связь не работает, руководителям по барабану, и вообще он очень обижен и оскорблён. Бумага требует обратного отзыва, начальство поднимается на уши. Я, пребывая в шоке, демонстрирую руководству, что всё исправно работает: жалобы поступают на специальный электронный ящик.

Начинаем искать «анонима», через час находим. В ходе беседы в стиле «ни единого разрыва» с чередой угроз и воплей начинаю понимать суть. Как оказалось, после ввода огромного сообщения, написанного в порыве ярости, дядя с желчью на губах сразу тыкал кнопку «Отправить». После этого страничка требовала ввести код подтверждения. «Аноним», пребывая в состоянии когнитивного диссонанса, не успокаивался и продолжал фанатично тыкать «Отправить». После пятого щелчка страница становилась девственно чистой, происходил нервный срыв, и цикл повторялся. Только после трёх циклов борец за справедливость решил поступить по старинке.

8474

Да — да — да — нет — да

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

— У меня со страницы пропала вся моя реклама!

Лезу в настройки нового интерфейса, проматываю до страницы с настройками рекламы — все галочки стоят. Иду к одному продвинутому коллеге, к другому — все подтверждают, что галочки на месте.

Делать нечего — пишу инженерам. Ответ примерно следующий:

— Вы что, рекламщики, вообще читать разучились?! Там же напротив галочки написано: «Запретить показ рекламы». Значит, она должна быть выключена, а не включена!

Сижу теперь в смешанных чувствах. С одной стороны, стыдно перед инженерами за себя и коллег, что невнимательно читали. А с другой — ну вот какого художника было менять значение на отрицательное и прятать среди двух десятков положительных?

8470

Безопасность — gov.**

Сайты в правительственном домене .gov.страна. Ресурсы с информацией по тендерам пестрят многотысячными заказами на разработку информационных порталов и систем управления с веб-доступом к специальным базам данных. За такие заказы берутся энтерпрайзные конторы с внушительным послужным списком и списком услуг, в котором не только разработки шаблонов для «джумл» и «вордпрессов», но и услуги по осуществлению аудита, построения систем защиты данных с ограниченным доступом, и прочее, прочее, прочее.

Когда же, загружая официальный документ с разработанного энтерпрайзной конторой новенького, с иголочки, сайта, абсолютно ненамеренно вытерев в адресной строке всё, кроме домен.gov.страна/files/, видишь листинг каталога веб-сервера, уже становится нехорошо.

Когда, следом заглянув в robots.txt, видишь в списке запрещённого ботам каталог популярного визивиг-редактора, к горлу подкатывает ком: «Это же крупная государственная контора, этого не может быть!»

Когда далее находишь в каталоге этого редактора веб-интерфейс плагина для загрузки файлов, не прикрытый даже банальной http-авторизацией, невольно вырывается истерический хохот: «Я могу загружать файлы? Это сон? Так не должно быть!» Но версия загрузчика настолько стара, хоть и свободна-открыта, что может благодаря уязвимостям трёхлетней давности заливать что угодно — хоть .exe, хоть .php.

Торопишься написать письмо веб-мастеру, описываешь всё в мельчайших деталях, отправляешь, ждёшь ответа — час, два, полдня, день… Ответа нет, изменений на сайте тоже. Будний день.

Минуты сомнений. Статья 361 УК? Но я же не преодолевал никаких средств защиты, их просто не было на моём пути! Потемнение разума на одно мгновение — и ты уже видишь Ubuntu на третьем ядре, не обновлённом после обнаруженной в январе уязвимости Mempodipper, установленный на сервер (sic!) KDE, энтерпрайзная БД Oracle, несколько дампов — наверное, бэкапы. Ну, хоть не совсем отсталые админы. Хотя…

В домашних каталогах админов — гигабайты видео (wget со ссылками в истории команд), музыка на любой вкус, каталог games на пятнадцать гигабайт. «Герои Голд»? Не, не играл в такое. Ничего не трогаю, ничего не удаляю, ничего не сливаю, выхожу, оставив записку на видном месте.

Письмо-ответ от вебмастера так и не пришло. Радует, что сайт таки прикрыли через несколько дней — видимо, при помощи rm -rf /*. Теперь моя совесть чиста.

Ребята, если вы узнали себя, не стесняйтесь — давайте спишемся, встретимся за бокалом хмельного напитка вечерком. Поскольку «спасибо» я не дождался, то вы угощаете. За беседой я расскажу вам, у кого из ваших коллег по правительственным сайтам до сих пор есть или была такая же фигня, а вы мне — как с таким уровнем знаний, умений и профнавыками получать такие заказы и такую работу. Буду ждать.

8378

Дурная голова рукам покоя не даёт

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

Клиент не торопил, поэтому всю неделю я заканчивал предыдущий проект. И вот настало время взяться за новый заказ. Так, что же там за фамилия была?.. Лезу в скайп, открываю историю сообщений. Негусто. Тут явно чего-то не хватает: переписка была больше. Иду в настройки, смотрю — «Хранить всё». Но тут явно не всё! Не может ведь CCleaner чистить историю, а если б и чистил — то всю сразу, а не частично.

Помню, что общался только по телефону и скайпу, но себе уже не очень доверяю. Проверяю почту — нет, не было ничего. Значит, скайп! Ползу в AppData\Roaming\Skype. Ага, chatsync — наверное, то. Открываю — иероглифы. Пробую кодировки — лажа. Зашифровали, демоны!

Ничего, Гугл в помощь. На каком-то форуме нахожу прогу, которая расшифровывает историю скайпа, ссылочка прилагается, причём рабочая — красота! Качаю, запускаю. Погасить скайп? Да пожалуйста! Вуаля, вся переписка как на ладони. И где же то сообщение? Где эта проклятая фамилия?! Она ведь была! Была напечатана! Я её читал!

Не, клиенту звонить — не вариант. Совсем не вариант. Звонить… Телефон… «Сообщения → Входящие»… Вот же она, родимая!

Честь мундира спасена. Можно приниматься за работу.

8377

Умри и так и сяк

Зашёл как-то в гости друг с парой бутылочек пива, а я на то время сайт писал уже достаточно продолжительное время. Ну, думаю, отвлекусь немного, передохну. Слышу от товарища, который внезапно оказался за моей спиной и смотрит в монитор, фразу:

— Нда, какой ты стал жестокий с этой работой… Ты бы отдохнул, что ли, а то только убивать тебе и убивать кого-то!

Начинаю судорожно искать причину вывода. Взгляд падает на слишком частые вызовы die(); в коде. Баголовство было в самом разгаре…

8370

Кудрявая «ж»

На неделе занимался оптимизацией одного очень убогого ресурса: треть сайта в CP1251, половина в UTF-8, остаток в KOI8-R, и всё это сопровождается постоянными iconv(). Стоит ли говорить о промышленных поставках отборных матюгов при исправлении всего этого?

Но речь не о том. Вспомнился случай, произошедший в мои эникейские годы. Утро понедельника, звонок на внутренний номер:

— Доброе утро! У нас тут буквы волосатые, а вчера нормальные были!

Оказалось, что понедельник у конкурентов тоже был несладким: в заголовке их страницы не была указана кодировка.

8368

Крылатая диакритика

Работала над проектом сайта. Днём — учеба, ночью — работа. И вот возвращаюсь я домой, иду по виадуку в сторону вокзала и вижу, что надпись на вокзале превратилась в абракадабру. С мыслями «Ёшкин кот, кодировка слетела!» судорожно тянусь к мышке…

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