Home
Заметки перфекциониста
Свежий бред 

Реклама

Настроить
1-Дек-2009 01:45 pm - Гугл учит плохому [web]
Собственно вот: Reducing the file size of HTML documents
Уменьшить ХТМЛ это конечно хорошо, но не путем же уродования православного и идеологически верного XHTML, преобразуя его в еретичный говно-HTML 4.0!
9-Июл-2009 05:50 pm - www.govnocode.com [security, web]
GovnkocodeСегодня утром от работы меня отвлек смех из соседней комнаты: смеялись долго и громко. Заинтриговавшись причиной оваций решил сходить посмотреть в чем же дело. Как оказалось, девчонки смеялись над смешным и новым для них словом — govnocode. Я же посмеялся над "красивым" дефейсом и задумкой.

Ранее я писал о найденных мною многочисленных уязвимостях на софтварных архивах. Этот сайт как раз оказался них.

Скрины )
2-Апр-2009 11:01 pm - Где мой CSS ??? [web, wtf, жы-журнал]
Lost

Ну какой толк от ЖЖ-шного Custom CSS, если сия фича работает только для заглавной страницы?

Баг так баг. Только с заподлянкой. Дело в том, что фича исправно работает еще и при предпросмотре: отредактировал новый пост, глянул — все отлично. Отправил на печать, глянул в журнале — все как надо. А вот горькую правду узнаешь только спустя некоторое время, когда зайдешь на страницу статьи и в комментарии...

... вот и пришлось переписать всю подсветку синтаксиса в предыдущем посте...

2-Апр-2009 10:42 pm - Wicked, Wicked Web [security, web]
Wicked, Wicked Web

Вот уже скоро будет год, как я начал заниматься вебдевелопингом. Скажу сразу, что веб не является моей основной профессией — я по прежнему делфи-программист. А веб — это как часть моей широкопрофильности :)
За год довольно много чему научился, приобрел опыт. Чем и хочу поделиться.

Спам.

Многие решают стандартным способом — обязывают пользователя вводить капчу. Способ надежный и проверенный, но, тем не менее, не лишенный недостатков: во-первых, лишний напряг честному пользователю, а во-вторых, это надо еще специальные скрипты ставить (ну я до сих пор не знаю, как это реализовано, потому для меня это пока сложно :).

Тем не менее, со спамом можно бороться и без капчи. Способ очень простой и довольно известный: на форме есть скрытое поле, назовем его ver-code, заполненное заранее известным значением. Значение меняется раз в день/неделю/месяц. При постинге скрипт проверяет это значение и если оно не совпадает, посылает спам-бота куда подальше. Суть метода заключается в том, что спаммеры не успевают обновлять свои базы и постят, используя старый ver-code либо вовсе без него. Конечно, это не спасает от более умных ботов, которые каждый раз загружают страницу, но поверьте, спам сократится в разы — проверенно на собственном опыте. Также есть очень малая вероятность, что за бота примут добропорядочного пользователя: в этом случае матюганы в сторону бота меняем на вежливую просьбу перезагрузить(Refresh) страницу и повторить попытку — боту то все-равно, а вот пользователь поймет вас правильно :)

Также есть вполне рабочий способ, не использующий капчу, и в то же время использующий ее. Все банально: вместо капчи вешаем статическую картинку. Все. Чтоб боты прошли такую тривиальную защиту нужно, чтоб кто-то постарался. А именно увидел, что капча не меняется, оторвал свою пятую точку, и подкрутил настройки спаммерского ПО. Но кто это будет делать для сайта vasia.pupkin.org? Сей метод уже более полугода работает для сайта, и никого спама я не видел (точнее видел в логах, подробнее тут). Хех, интересно то, что несколько клиентов сообщали о "заклинившей" капче :)

Безопасность

Первое правило: никогда не доверяй клиентской стороне. Это учат в школе. Этим прожужжали все уши. И тем не менее многие вебдевелоперы допускают ошибки.

Думаете что если вы владелец http://vasia.pupkin.org то его никто не будет ломать? А вот и ошибаетесь. Не хакер, так бэд-бот: будьте готовы, что ваш сайт начнут пробовать на прочность несколько десятков раз в день. Бэд-боты как любые другие краулеры гуляют по сети и пробуют сайты на уязвимости: будь то известные дыры в различных CMS или стандартный набор SQL-injection — вся информация о найденных брешах отправляется создателю бота, а он уже придумает, что с вами делать.

Думаете, что если у вас все входящие данные экранируются, то SQL-injection не страшен? А про то, что в SQL'е все это нужно обернуть в апострофы не забыли? Я на вот этом и попался. Модифицированный пример из википедии:

$id = mysql_real_escape_string($_REQUEST['id']);
$res = mysql_query("SELECT * FROM news WHERE id_news = $id");

Вроде экранирование есть, но дыра так и осталась не прикрытой: если в id передать "-1 OR 1=1" то вместо новости с заданным идентификатором будут выбраны все имеющиеся в базе новости.

Хорошо, что сайт сделан вручную, без никаких CMS — ошибка не стала уязвимостью, и никак себя не проявляла. Вообще хорошее правило вместо универсального "SELECT * FROM Table" выбирать только то, что требуется в данный момент: "SELECT field1, field2 FROM Table".

А еще хорошим правилом является просмотр логов, благодаря коим и была выявлена эта ошибка. Вообще логирование — очень важная штука. Думаю, это все знают и понимают: будь то ругательства MySQL-ля, ерроры в скриптах, или что-то еще — все нужно логировать. Но также будет очень полезным записывать и все "подозрительные" запросы, смахивающие на попытки взлома системы: кроме того, что можно всегда быть в курсе ее состояния (или хотя бы знать, что же с ней произошло :), так еще и параноидальный админ (прям как я:) сможет вовремя увидеть и быстренько подлатать брешь или сомнительный участок. А такие участки были мною исправлены.... "Подозрительность" определяется просто: например, если там где должно быть целочисленное поле идет что-то левое. В таком случае ругаемся пользователю и тихонечко пишем в лог. Такая штука полезна и для определения "а была ли попытка взлома?" — всегда можно посмотреть access-логи и восстановить полную картину: вполне возможно, что не все записалось и часть действий хакера осталась незамечена (и никак не обработана/заблокирована!).

Ни в коем случае нельзя показывать пользователю интимные подробности произошедшей ошибки — это то и хакерам нужно. Казалось бы все и так знают, и у всех так сделано. Не у всех. В нете полно сайтов дающих интим, если умело попросить :). Приведу пример не так давно обнаруженных мною уязвимостей на ряде сайтов. Скажите, вы всегда проверяете валидность загружаемых файлов? А когда работаете с загруженным контентом придерживаетесь правил защиты от SQL-injection? А вот почти каждый десятый даунлоад-архив (всего таких больше сотни) валится при попытке засабмитить PAD-файл (XML-файл с описанием продукта) в нужном поле которого оказалась одинарная кавычка. Причем большинство из них как раз выдают пользователю те самые интимные подробности формата таблицы БД, куда все это дело не удалось добавить.

PHP-Apache

Эта связка глючная. Причем безнадежно. В одной версии фиксят баг — он появляется в следующей, причем приводит с собой еще семеро.

Нельзя быть уверенным, что скрипты прекрасно работающие в одной верcии, успешно заведутся на следующей. Взять, например server-side includes. Я нашел три баг-репорта для разных версий (!!!) и везде они были пофиксены и везде предлагали скачать свежий CVS-снапшот. Хотя у меня была версия, для которой "якобы" этот баг был исправлен, но, увы, можно было отправлять и четвертый баг-репорт... Та же история и с оверрайдом 404-го статус-кода на обработчике ErrorDocument: в одной версии работает, в более поздней — нет, причем баг-фикс идет где-то посередине. Хорошо, когда такой баг проявляется только на одном сайте/скрипте к которому имеешь доступ. Гораздо хуже, когда пользователь не может установить и заставить работать твой "бажный" скрипт (как было с DynamicPAD).

Ни в коем случае нельзя слепо копипастить куски php-кода из тематических форумов и туторных сайтов — себе же дороже будет. Здесь несколько другая ситуация чем с другими ЯП: php — это серверный скрипт, требующий особого подхода к безопасности. А вот обычно те, кто добродушно делятся своим кодом, о безопасности, похоже, и не слышали. Потому и оказывают медвежью услугу.

Ошибки и ворнинги php-интерпретатора в браузере видели все — такое есть на каждом n-ом сайте. И каждый мог судить о некомпетентности программистов написавших тот сайт или скрипт. А вы тоже хотите афишировать свою безграмотность? Чтоб вас также само судили? Нет? Тогда нечего выводить интимные подробности тому, кому они не предназначены:

error_reporting('E_NONE');

В то же время показываем их только тому, кому нужно (ни в коем случае не глушите все ошибки "ухом" - @. Это плохо кончится):
  1. в php.ini:

    log_errors = on
    error_log = /var/logs/php/errlog.txt

  2. в .htaccess

    php_flag log_errors on
    php_value error_log /var/logs/php/errlog.txt

  3. в коде php-скрипта

    log_errors("on");
    error_log("/var/logs/php/errlog.txt");

Ну и пару слов про почту.

Никогда не следует надеяться на функцию mail — письмо может так и не дойти до адресата, и вы никогда об этом не узнаете. И не надо говорить, что ваш sendmail работает безупречно — дело может быть вовсе не в нем: мало ли чего может приключиться с письмом по пути к точке назначения. Так что логируйте все тексты писем, которые вы отправляете — если даже посылка и не дойдет куда нужно, то она, по крайней мере, не пропадет безвозвратно. И, быть может, вы не потеряете клиента.

SQL-запросы экранируете? Будьте добры экранировать передаваемые в mail хидера (обычно это From, Reply-To, Subject). Иначе не удивляйтесь, что ваш мейл-сервер занесли в черный список как злобного спаммера. Достаточно просто "резать" все переносы строк в этих полях (они обязаны быть однострочными).

На последок. Как говорил вождь, учится, учится, и никогда не расслабляться. Помните: выживут только параноики :)

21-Фев-2009 12:27 pm - Browser Security Handbook [security, web]
Browser MalwareПерешедший чуть более года назад в Google Михал Залевски (Michal Zalewski), ранее известный по ряду уязвимостей, обнаруженных им в различных браузерах, опубликовал Browser Security Handbook — обзор подходов к обеспечению безопасности в браузерах вместе со сводными таблицами, описывающими эффективность их реализации (равно как и наличие таковой) в девяти версиях современных браузеров — от IE6 до Chrome.

Проект предназначен для сбора и классификации различных проблем, связаных с безопасностью, в различных браузерах. Рассматриваются такие неявные, неизвестные или плохо документированые вещи, как:

  • обработка и интерпретация URL'ов (включая Юникод, схему file://)
  • работа с протоколом HTTP, способы обработки поступающего контента (включая интерпретацию content-disposition, трюки с content-type и пр.)
  • использование браузерного кеша
  • работа с куками
  • обработка HTML'я, DOM
  • стандартные политики безопасности применительно к DOM'у, Java, Falsh, Silverlight и т.д. и т.п.
  • экспериментальные и устаревшие, но еще используемые, механизмы безопасности

и многое много другое.

>>> Рекомендуется к обязательному прочтению и распространению <<<

24-Ноя-2008 08:29 pm - Забавный спам [web]
spam.jpg

Полезно вести логи. Полезно вести логи всего и вся что происходит с сервером. Также полезно их просматривать... Хотябы изредка :).

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

От уныло-похвальных...

Very nice design ;) Good work,webmaster!
It's a very good site !! Very nice work, admin :) Good luck !
Thanks for all you do in helping me fulfill my dreams.
Yo have nice site, admin! keep up good work man!
Wow!! It's getting better and better. Keep it up man.
I think your site is very good and complete, but the information you have here
Wow!! It's getting better and better.
I love this site so so so much :) Cool site!!
I love you so much! Great place to visit!

Весьма забавных...

Grant you just made yourself something to do with it
Yep you are jack our maniac in my chat box and your mental here
I love the great insight!
we better get on the tinatic because sinking is rising on saturday morning!
Not much on my mind worth mentioning. What can I say? I haven't been up to much lately. It's not important. Oh well.
I've just been sitting around waiting for something to happen.
Greetings! and test of guestbook, coming up here to show love to the site.
Not bad... Not bad.
Not bad... Not bad.

До просто настоящих приколов:

DAESH ONOTOLE V PRAVITELI VSELENNOI!
DAESH ONOTOLE V PRAVITELI VSELENNOI!
Im nuts with big nuts, i love saying that XD


Интересно еще то, что во многих случаях спам не рекламирует чего либо: там просто нету ссылки! Хотя, судя по введенному полю капчи и повторам, форму заполнял робот.

Реклама

Настроить
Страница загружена Дек 8 2009, 1:38 am GMT.