Pull to refresh

Comments 49

НЛО прилетело и опубликовало эту надпись здесь.
Действительно смешно.. *-)
UFO just landed and posted this here
думаю лучшее что можно сделать, это написать своё, возмётесь?)
UFO just landed and posted this here
смысла нет. проще и правильнее доработать то, что есть. это и хотел обсудить.
это блог о drupal и многие владельцы/разработчики drupal-сайтов возможно и не догадываются какие проблемы присутствуют их сайтах.
так-что цели у меня было две:
1. обратить внимание, что надо решать проблему
2. развеять витающий с недавних пор миф о том, что на drupal-можно построить за три дня "супер-проект". на нем можно многое построить, но все не так просто, как кажется на первый взгляд. будьте к этому готовы и не бросайте все, когда через три дня ничего не получится :)
смысл есть...
любая смс создана для решения каких-то конкретных проблем. для начала проекта вполне подходит готовый вариант, но позднее его нужно конкретно дорабатывать под свои нужды и не факт, что тогда выйдет дешевле - создание проекта с нуля или необходимость разобраться в движке настолько, чтоб переделать все :)
иногда стоит быстро запустить проект на готовом движке и занять нишу, а потом хоть дорабатывать, хоть переписывать. и пусть это стоит в несколько раз дороже, выгоды будет больше.
если начинать проект с написания собственного движка, то можно:
1. не успеть сделать это первым
2. сильно разочароваться, когда окажется что проект не в состоянии добиться той популярности, на которую вы рассчитывали.

НО! Данная тема не об этом. давайте по существу поговорим. Как защищаться то будем?
Поддерживаю... Drupal великолепно подходит как платформа для начала но с его дырявостью нужно что-то делать.

К сожалению, я с PHP дружу пока не очень (другие предпочтения) поэтому даже не знаю, в какую сторону копать.
В данном случае это дырявость не Drupal, а модулей сторонних разработчиков (vote_up_down)
...а я только все собирался бросить и ставить себе Drupal...
Свое делать смысл есть. но не с нуля.
По личному опыту, на написание CMS-ки уходит тонны времени и нервов, особенно на фоне наличия готовых решений, на которые приходиться ориентироваться.

Drupal разрабатывает группа разработчиков + пользователи, а собственный продукт в течении года/двух/... придеться делать самолично.

Хотя, есть и плюсы. Я, например, легко могу исправить баги в своей работе , т.к. знаю ее изнутри.
В данном случае виноват не Друпал, а конкретный модуль к нему.
Над Друпалом неслабая команда, он крутится на тысячах сайтов, выявляемые проблемы оперативно устраняются - выходят обновления.
А вот качество дополнительных модулей сильно варьирует.
Есть основные, над которыми активно работают те же разработчики что и над Drupal Core (типа Views, CCK), на них можно положиться.
А вот всякие мелкие модули залитые неизвестно кем могут быть весьма и весьма глюкавыми.
Так что нужно смотреть, выбирать и проверять
да, сначало нада понять что не работает, а потом кричать..., это не проблема 'друпала', а проблема для разработчика модуля. зайди в 'баг репортс' для этого модуля и увидиш что там десятки багов и проблем...
UFO just landed and posted this here
я бы только добавил что написание проекта с нуля не гарантирует отсутствие каких-либо проблем безопасности, производительности, стабильности и т.д.
вопрос в вашей популярности. популярный проект привлекает больше людей и больше любителей нагадить...
Правда и маленький проект часто оказывается испорченным из-за детей, которым было не на чем потренироваться.
Куда не плюнь...
ага. а еще обязательно написать с нуля ОС, дабы не закладываться на глюки венды и ужасных линуксов, обязательно собственное железо (процессор главное собственной разработки).

ах, да. и итнернет, тоже, свой.
Когда своё ломают не так обидно или что? :)
С XSS проблемы бывают и у самых крупных социальных сетей, например, помниться случай с MySpace. Что касается друпала — вы бы сначала им в багтрекер написали, а потом бы выкладывали здесь, так как они к секурным ошибкам очень строго относятся.
:))) ага, именно потому, что они очень строго относятся к секруным багам, они не стали писать никаких парсеров для обработки тегов.
Есть мнение, что друпал вы видели только на картинках.
Какая разница, видел я его на картинках, или глубже. Есть несколько разновидностей секурных багов, в том числе и XSS. И за отсутствие таковых все форумы, порталы и прочие свободные движки борятся днем и ночью. Это настолько замусоленная тема, что уже тошно. Ребята с antichat.ru одно время стабильно раз в неделю публиковали новые xss в разных форумах.

Но нет, вы что, друпал это совсем другая тема и раз я видел его только на картинках, значит они действительно очень секурные.
Что бы этого избежать я генерировал случайный идентификатор и писал его в сессию и как приставку к урлу (&voteid=blablabla) + привязка по ip + привязка к промежутку времени. Жутко? ))))
Я сейчас тоже подумал о решении данной продемы и так же прихожу к выводу, что URL для голосования должен быть переменный, меняющимся во времени. Тогда подставить его в тег IMG будет практически невозможно. Кривязку к сессии URL'а можно не делать, чтобы сэкономить ресурсы сервака.
лучше просто не использовать GET запросы для чего-то важного, вроде голосования
С POST'ом тоже можно извратиться. Сделать на стороннем сайте форму с autosubmit'ом на javascript и action указывающем на атакуемый сайт. И разместить ссылку на такой скрипт где-нибудь в комментариях чтобы пользователи на нее заходили.
Можно проверять HTTP_REFERER
можно, но у некоторых пользователей referer пустой
тоесть вы предлагаете решение на уровне конкретного модуля?
я бы предпочел решение на уровне фильтра для пользовательского контента.
правда пока не придумал по какому принципу фильтровать.
может добавить ID сесии в hidden поле формы и валидировать его перед обработкой данных?
можно заставить других комменты писать или карму добавлять :)
достаточно в парсере кода, поступающего от пользователя, запретить динамические картинки. И все, в общем-то.

Конечно, если парсер пропускает iframe и прочую опасную чепуху вплоть до яваскрипта то придется защищать все свои голосовальные скрипты и прочее.

Тогда, по-моему, достаточно передавать в скрипт, принимающий голос +\-
закодированный параметр какойто и время

$votelink = 'vote.php?id=1&sec'.md5($_SERVER['REMOTE_ADDR'].'no-fuckin-way').'&stamp='.time();

Конечно не нужно проверять 100%ное совпадение $_GET['stamp'].
Что-то вроде

$validVote = ((intval($_GET['stamp']) - time()) < 60) ? true : false;

if(!$validVote)
{
die('No more jokes, you moron!');
}
Броузеры вполне себе понимают redirect на картинках, так что польза от запрета динамических картинок нулевая
допустим что нулевая,
но остального будет достаточно :)
Может быть не совсем в тему...

Не так давно на Хабре один преподаватель просил совет - какие дать задания (веб-разработка) для курсовых проектов своим студентам. Насоветовали много - соц.сеть, файл-обмен, хостинг картинок и т.д. и т.п. При этом все нужно было сделать с февраля до мая.
И как же многие тут восторгались - "ах нам бы такого преподавателя".

Разделю этот восторг лишь от части. Потому что события последних дней на хабре (дефейс и целая куча "вдруг" выявленных дешевых уязвимостей), ярко продемонстировали, что будет из таких студентов в будущем (точнее, какие проекты они потом будут делать).

Не лучше ли было загрузить студентов сделать что-то маленькое, но хорошее и доведенное до ума на все 100% ? Например, банальный файл-аплоад с индикатором прогресса, систему аутентификации, парсер хтмл-коментариев, которые постят пользователи, на предмет вырезания потенциально опасных тэгов, и т.п.
В противном случае, мы рискуем расхлебывать подобные глюки еще очень-очень долго и совсем в других масштабах.

Рискну предложить перечитать вот эти статьи:
http://russian.joelonsoftware.com/Articles/BacktoBasics.html
http://russian.joelonsoftware.com/Articles/AdviceforComputerScienceC.html
http://local.joelonsoftware.com/mediawiki/index.php/%D0%9E%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%B0_Java

PS
Когда-то очень очень давно, на первом курсе института, мы учили Бейсик. Да-да, простой Бейсик, не визуал. Из средств разработки на тот момент самым "крутым" был турбо паскаль 3.0 - но я не об этом. Так вот, с первых же лекций и до диплома (когда бейсик все уже успели тыщу раз забыть) звучала магическая фраза "защита от дурака". Т.е. преподаватель мог попросить тебя запустить твою программу по решению квадратных уровнений, например, и ввести вместо начальных данных все что ему угодно (хоть попрыгать на клавиатуре). Если твоя программа после этого "падала", то шансы получить "отлично" у тебя резко уменьшались, даже если ты применил какой-то супер-пупер алгоритм и закодировал все в 3 строчки - это уже никого не волновало, ибо программа это целостный организм.
К чему бы это я все.... Ах да, при всем при этом, специальность моя в институте к программированию имела лишь опосредованное отношение.
В общем, плохи дела, "учите мат.часть", а ссылки я уже дал.
хехе. я тот самый преподаватель )) более того, пост, описывающий дефейс хабра того же автора ))
по сути вы абсолютно правы. я давно занимаюсь преподаванием и последние года 3 еще и вебом и хорошо понимаю, что:
во-первых, студенты реально хороший продукт сделать не могут, т.к. они делают его впервые. в нем будет море дыр, уязвимостей, непродуманностей, багов, ситуационных решений и тп.
во-вторых, намного важнее дать им понять чем дышит разработка сколько-нибудь крупного проекта "внесколькером", как слушаться главного и как работать ответственно, кто и как должен тестить проект и почем дизайнер должен уметь верстать
в-третьих. лабораторную на разработку модуля "фотогалерея" студенты мне не сдают до тех пор, пока я могу нарушить ее работу. загрузкой скрипта, sql-инъекцией, чем угодно.
поверьте, лично к вам у меня нет никаких претензий :))
наверное, я был бы очень рад, если б у нас в свое время были такие преподаватели, которые ставили интересные задачи и пытались выйти "за рамки".

а по-поводу ваших "во-первых, во-вторых, в-третьих" - перечитайте ссылки, которые я дал, если еще не сделали этого.

PS
можно вопрос личного характера. глянул ваш профайл только что, если он конечно не врет. и не стыковка получается какая-то: "я давно занимаюсь преподаванием" - это не со школьной ли скамьи?
сохранил. почитаю
ну с 1998 года. почти 9 лет. то что с 16 - не удивляйтесь, так оно и было. первые 2 года преподавал информатику на подготовительных курсах в колледже. потом учил ИТ в разных формах и разных людей. В ВУЗе преподаю (правда ну очень чуть-чуть) последние 4 года.
ну, спасибо за честный ответ, хотя мы уже совсем отвлеклись и нас щас побьют :))
и дай вам бог успехов в вашем нелегком, но нужном деле (я имею в виду преподавание).
сорри, меня "понесло" уже конкретно под конец дня.
во-первых, в PS забыл смайлик :))
во-вторых, на PS можно не отвечать и не обращать внимания.
Как давний поколонник Друпала все же посоветую о таких вещах писать в багтрекер данного модуля. Ну если поговорить захотелось прямо о модулях, то drupal.ru есть. Здесь же хочется видет более концептуальные статьи, к примеру мы недавно устроили мультисайт на разных доменах с частично расшаренной базой.
багтрекер молчит, а в drupal.ru (при всем уважении) в большинстве своем — детский сад.
Как первые комменты превращаются в "НЛО прилетело и опубликовало эту надпись здесь." Это еще что за новая фишка?
Фильтруйте ввод, гардемарины..! =)
Кажись в настройках модуля есть опция "убирать ссылку". Она делает невозможным такие маневры, правда и лишает возможности голосовать безджаваскриптовцам, но "who cares?" :)
>> и это практически самое безобидное что можно делать

например?

вопрос не празндый, я пару дней назад начал уже один проект на Drupal (в том числе поставил упомянутый модуль), сейчас буду второй сайт уже делать, хочу знать чем может грозить подобная фича кроме накрутки пойнтов.

спасибо.
Sign up to leave a comment.

Articles