смысла нет. проще и правильнее доработать то, что есть. это и хотел обсудить.
это блог о drupal и многие владельцы/разработчики drupal-сайтов возможно и не догадываются какие проблемы присутствуют их сайтах.
так-что цели у меня было две:
1. обратить внимание, что надо решать проблему
2. развеять витающий с недавних пор миф о том, что на drupal-можно построить за три дня "супер-проект". на нем можно многое построить, но все не так просто, как кажется на первый взгляд. будьте к этому готовы и не бросайте все, когда через три дня ничего не получится :)
смысл есть...
любая смс создана для решения каких-то конкретных проблем. для начала проекта вполне подходит готовый вариант, но позднее его нужно конкретно дорабатывать под свои нужды и не факт, что тогда выйдет дешевле - создание проекта с нуля или необходимость разобраться в движке настолько, чтоб переделать все :)
иногда стоит быстро запустить проект на готовом движке и занять нишу, а потом хоть дорабатывать, хоть переписывать. и пусть это стоит в несколько раз дороже, выгоды будет больше.
если начинать проект с написания собственного движка, то можно:
1. не успеть сделать это первым
2. сильно разочароваться, когда окажется что проект не в состоянии добиться той популярности, на которую вы рассчитывали.
НО! Данная тема не об этом. давайте по существу поговорим. Как защищаться то будем?
...а я только все собирался бросить и ставить себе Drupal...
Свое делать смысл есть. но не с нуля.
По личному опыту, на написание CMS-ки уходит тонны времени и нервов, особенно на фоне наличия готовых решений, на которые приходиться ориентироваться.
Drupal разрабатывает группа разработчиков + пользователи, а собственный продукт в течении года/двух/... придеться делать самолично.
Хотя, есть и плюсы. Я, например, легко могу исправить баги в своей работе , т.к. знаю ее изнутри.
В данном случае виноват не Друпал, а конкретный модуль к нему.
Над Друпалом неслабая команда, он крутится на тысячах сайтов, выявляемые проблемы оперативно устраняются - выходят обновления.
А вот качество дополнительных модулей сильно варьирует.
Есть основные, над которыми активно работают те же разработчики что и над Drupal Core (типа Views, CCK), на них можно положиться.
А вот всякие мелкие модули залитые неизвестно кем могут быть весьма и весьма глюкавыми.
Так что нужно смотреть, выбирать и проверять
да, сначало нада понять что не работает, а потом кричать..., это не проблема 'друпала', а проблема для разработчика модуля. зайди в 'баг репортс' для этого модуля и увидиш что там десятки багов и проблем...
вопрос в вашей популярности. популярный проект привлекает больше людей и больше любителей нагадить...
Правда и маленький проект часто оказывается испорченным из-за детей, которым было не на чем потренироваться.
Куда не плюнь...
ага. а еще обязательно написать с нуля ОС, дабы не закладываться на глюки венды и ужасных линуксов, обязательно собственное железо (процессор главное собственной разработки).
С XSS проблемы бывают и у самых крупных социальных сетей, например, помниться случай с MySpace. Что касается друпала вы бы сначала им в багтрекер написали, а потом бы выкладывали здесь, так как они к секурным ошибкам очень строго относятся.
Какая разница, видел я его на картинках, или глубже. Есть несколько разновидностей секурных багов, в том числе и XSS. И за отсутствие таковых все форумы, порталы и прочие свободные движки борятся днем и ночью. Это настолько замусоленная тема, что уже тошно. Ребята с antichat.ru одно время стабильно раз в неделю публиковали новые xss в разных форумах.
Но нет, вы что, друпал это совсем другая тема и раз я видел его только на картинках, значит они действительно очень секурные.
Что бы этого избежать я генерировал случайный идентификатор и писал его в сессию и как приставку к урлу (&voteid=blablabla) + привязка по ip + привязка к промежутку времени. Жутко? ))))
Я сейчас тоже подумал о решении данной продемы и так же прихожу к выводу, что URL для голосования должен быть переменный, меняющимся во времени. Тогда подставить его в тег IMG будет практически невозможно. Кривязку к сессии URL'а можно не делать, чтобы сэкономить ресурсы сервака.
С POST'ом тоже можно извратиться. Сделать на стороннем сайте форму с autosubmit'ом на javascript и action указывающем на атакуемый сайт. И разместить ссылку на такой скрипт где-нибудь в комментариях чтобы пользователи на нее заходили.
тоесть вы предлагаете решение на уровне конкретного модуля?
я бы предпочел решение на уровне фильтра для пользовательского контента.
правда пока не придумал по какому принципу фильтровать.
Не так давно на Хабре один преподаватель просил совет - какие дать задания (веб-разработка) для курсовых проектов своим студентам. Насоветовали много - соц.сеть, файл-обмен, хостинг картинок и т.д. и т.п. При этом все нужно было сделать с февраля до мая.
И как же многие тут восторгались - "ах нам бы такого преподавателя".
Разделю этот восторг лишь от части. Потому что события последних дней на хабре (дефейс и целая куча "вдруг" выявленных дешевых уязвимостей), ярко продемонстировали, что будет из таких студентов в будущем (точнее, какие проекты они потом будут делать).
Не лучше ли было загрузить студентов сделать что-то маленькое, но хорошее и доведенное до ума на все 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 года.
ну, спасибо за честный ответ, хотя мы уже совсем отвлеклись и нас щас побьют :))
и дай вам бог успехов в вашем нелегком, но нужном деле (я имею в виду преподавание).
Как давний поколонник Друпала все же посоветую о таких вещах писать в багтрекер данного модуля. Ну если поговорить захотелось прямо о модулях, то drupal.ru есть. Здесь же хочется видет более концептуальные статьи, к примеру мы недавно устроили мультисайт на разных доменах с частично расшаренной базой.
Кажись в настройках модуля есть опция "убирать ссылку". Она делает невозможным такие маневры, правда и лишает возможности голосовать безджаваскриптовцам, но "who cares?" :)
>> и это практически самое безобидное что можно делать
например?
вопрос не празндый, я пару дней назад начал уже один проект на Drupal (в том числе поставил упомянутый модуль), сейчас буду второй сайт уже делать, хочу знать чем может грозить подобная фича кроме накрутки пойнтов.
События на хабре, vote_up_down и многое другое