Thalassa CMS 0.3.50: фильтрация атрибутов в тегахMon Jan 20 15:42:07 2025 UTC
Недавно двое вебанутых дегенератов наглядно продемонтрировали мне, что в
комменты можно засунуть жабаскрипт, невзирая на фильтр: теги script и
object, конечно, в число разрешённых не входят, но до сей поры
Таласса фильтровала только теги (по
их именам), а все атрибуты оставляла как есть. Между тем комитетская
мразь, придумавшая HTML5, впендюрила туда «событийные» атрибуты
вроде В общем, пришлось мне несколько дней потратить на переписывание фильтра. Там практически честный конечный автомат, и в нём в итоге стало чуть ли не вдвое больше состояний. Получившуюся в итоге версию я только что выложил под номером 0.3.50. Если на вашем сайте есть техническая возможность оставить
комментарий без прохождения премодерации, обновляйтесь прямо
сейчас. Во всех остальных случаях можно так сильно не торопиться.
В любом случае скорее всего при переходе на эту версию с
предыдущей ничего не сломается. Ну, не должно. В конфигах (и самой
Талассы, и CGI) в секции Инджой, короче. ![]() |
пояснениеВы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям. Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда. Андрей Михайлович Столяров в библиотеке Мошкова |
☞ From Anonymous (unverified) Sun Mar 2 22:04:49 2025 UTC
CSP
Если на некотором экземпляре Thalassa CMS не используется жабаскрипт, то можно попросить сервер добавить заголовок
Content-Security-Policy: script-src 'none'
или аналогичный ему<meta http-equiv>
в шаблон - это запретит любое исполнение кода со страницы браузером, включая такие inline-вставки, какonclick
в атрибутах.ответить
Re: CSP
Что значит "если"?! Ни на каком не используется.
Статус заголовочного параметра Content-Security-Policy мне изучать лень, но очень сильно подозреваю, что браузеры его игнорируют.
ответить
Re: Re: CSP
Если кто и не игнорирует этот заголовок, то браузеры - остальным он ни к чему.
Подозреваю, что 99% браузеров, с которыми приходят к вам на сайт попадают в одну из двух категорий:
ответить
Re: Re: Re: CSP
Подозревать мы можем что угодно, это всё разговоры в пользу бедных. Тут надо либо самим проверять, либо поискать, не проверял ли уже кто-нибудь другой. Лично мне сейчас не до этого.
ответить
☞ From Евгений Балов (unverified) Thu Feb 13 10:54:52 2025 UTC
XHTML
Простите за уточнение, но в XHTML есть onclick и всегда был, и никакие комитеты по HTML5 тут не виноваты.
Вот даже в DTD вашей страницы: https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd
И, в принципе, встречается в стандартах из прошлого века (например, HTML 4.01 из 1999).
ответить
Re: XHTML
Благодарю за уточнение, этого я не знал. В действительности это мало что меняет, фильтры артибутов в Талассе теперь есть (естественно, задаётся список разрешённых), но, по большому счёту, всё равно надо переходить на аналог bbcode. Сейчас, например, автор коммента может сломать всю вёрстку страницы, просто "забыв" закрыть тот или иной тег, а устроить корректное закрытие всего, что пользователь накосячил — это надо чуть ли не весь DTD реализовать, я к такому не готов.
ответить
☞ From Гость (unverified) Tue Feb 11 16:27:50 2025 UTC
А есть пользовательские сайты на этой CMS?
На сайте самой CMS в разделе информации о сайтах на ней указаны только ваши сайты, но, как я понимаю, в тот список прям очень тяжело попасть (не прокатят даже аддаптивные к мобилкам сайты, потому что в них явно будет css3).
Так вот, не знаете ли случайно, существуют работающие на талассе сайты, не попавшие в тот список по каким-то критериям? Как часто вообще кто-то присылает сайт и говорит "хочу в список!"? Или все эти новости про
или
адресованы самому себе?
P.S. Не хотел обидеть последним вопросом, если посчитаете его не публичным - можете потереть из комментария, как и этот абзац. Но на остальное прям очень интересно узнать ответ, так как всерьёз размышляю на переход на таллассу с очередного пхп-шной поделки для масс.
ответить
Re: А есть пользовательские сайты на этой CMS?
> не прокатят даже аддаптивные к мобилкам сайты, потому что в них явно будет css3
Ничего себе "даже". Если вы имеете в виду media queries, то за такое четвертовать надо по меньшей мере.
NB: сколько видел всякой ерунды на эту тему, нигде нет сколько-нибудь понятного объяснения, что это за viewport и всё прочее. Везде одно и то же: дизайн, видите ли, должен быть адаптивным, поэтому нужно написать вот такие и вот такие заклинания. Что эти заклинания значат (и что будет, в частности, если написать не прямо так, а как-то чуть-чуть по-другому), похоже, не понимают даже те, кто это всё придумал. Что и понятно, когда комитет за что-то берётся, итог немного предсказуем.
> Как часто вообще кто-то присылает сайт и говорит "хочу в список!"?
Не было ни разу :-) Ссылки на сайты присылали по принципу "а я вот какое сделал", но либо вообще ничего не говорили про список, либо (в одном случае) даже попросили ссылку из коммента вытереть, т.е. сайт публике не светить. Вообще есть такое ощущение, что какие-то сайты на Талассе крутятся в даркнетах, там как раз JS не поощряется; но авторы таких сайтов по понятным причинам не набиваются ни в какие списки.
> адресованы самому себе?
Вот уж точно нет. Стоит обратить внимание, во-первых, на активность в гостевухе, все эти люди откуда-то взялись и не похоже, чтобы они просто так развлекались запуском всяких странных софтин. Во-вторых, форматирование комментов в стиле thread было сделано в ответ на feature-request, подкреплённый заметным донатом (на моих собственных сайтах thread-комменты нигде не применяются), так что есть даже люди, готовые расставаться с деньгами.
ответить
Re: Re: А есть пользовательские сайты на этой CMS?
Чтобы адаптировать сайт к мобилке достаточно
<meta name="viewport" content="width=device-width, initial-scale=1">
Никакой CSS тут к черту не нужен.
ответить
Re: Re: Re: А есть пользовательские сайты на этой CMS?
Ага, бессмысленные заклинания писать научились, кнопку "Предпросмотр" нажимать не научились. В следующий раз я поленюсь < руками на < менять.
ответить
☞ From rkvg-es (unverified) Wed Jan 29 01:44:02 2025 UTC
опечатка :(
> UPD (22.01.2025): и в догонку версия 0.3.52.
Алексей Викторович, Вы меня простите сердечно, но ведь "вдогонку" же!
ответить
Re: опечатка :(
Факт, спасибо
ответить
Re: опечатка :(
И вы меня простите, но ведь "Андрей" же!
ответить
Re: Re: опечатка :(
Самое интересное, что я не заметил. Что-то замыленность глаза совсем зашкаливает.
ответить
☞ From vbcnthfkmnth123 (unverified) Wed Jan 22 19:25:59 2025 UTC
теги
Зачем вы используете фильтр для тегов по черным спискам? Почему бы вам не использовать белый список тегов? А все остальные например запретить.
ответить
Re: теги
Даже интересно, откуда вы взяли этот бред. Читать здесь. TLDR: разумеется, я использую именно список разрешённых тегов. Ну, во всяком случае там, где фильтрация включена (читай — в комментах). Тексты, которые пишу лично я сам, фильтрации тегов не подвергаются, что и понятно. Но там, где фильтрация производится, остаются только теги (а теперь ещё и атрибуты) из списка разрешённых, остальные просто молча исчезают.
Вообще вы бы ещё спросили, перестал ли я пить коньяк по утрам. Зла не хватает на такое, ей-богу.
ответить
Re: Re: теги
Не автор исходного комментария, но могу сказать откуда он это взял: на L.O.R., как обычно, кто-то, не читав ни код, ни что-то ещё, решил, что тут используются черные списки, а все остальные в том обсуждении естественно ему поверили.
Ну, а автор комментария также естественно притащил это сюда, не попытавшись открыть код или хотя бы документацию.
ответить
Re: теги
А, ну толпы вебанутых и прочих ньюфагов с лора, конечно, ещё и не такого понапишут и не в такое поверят, да.
ответить
☞ From lor (unverified) Wed Jan 22 10:17:57 2025 UTC
Инвалиды умственного труда
Где-то видел ваш комментарий про бОльшую часть LOR-a. После выхода новости о последней версии Thalassa сомнений не осталось.
ответить
Re: Инвалиды умственного труда
Я, честно говоря, на L.O.R. ходить в последнее время совсем перестал. А что, там кто-то кинул новость про Талассу?
ответить
Re: Re: Инвалиды умственного труда
Да, эти глупцы поливают вас грязью. Вера в человечество практически уничтожена, они так ничего и не поняли. Тем временем количество комментариев растет, а количество программ, для сборки которых нужен только make + gcc + unix остается прежним. Даже интересно, когда они уже начнут делать что-то полезное?
ответить
Re: Re: Re: Инвалиды умственного труда
Эти? Никогда, разумеется.
Таки любопытство пересилило, сходил глянул. На последней (на текущий момент) странице комментов:
Показано 13 сообщений из 92
(если кто не понял, остальные в игноре). И чего мне туда ходить, когда почти всё в игноре. Мне вот интересно, сам Макском тоже на собственное творение больше не ходит? Или он как-то эти потоки дебилизма ухитряется переваривать? При случае спрошу :-)
ответить
LOR
Однако на LOR-е вас явно любят: за пару дней накомментировали аж на 12 страниц, что в одной теме (про Талассу), что в другой (про учебник).
ответить
Re: LOR
Ну, э... тяжело, наверное, жить с огнемётом в анусе
ответить
Re: Инвалиды умственного труда
Ага, кинул. В этом топике кто-то даже выдумал, что вы якобы сами эту новость кинули на ЛОРе из-под другого аккаунта в целях самопиара :)
ответить
Re: Инвалиды умственного труда
Ага, и где там моя целевая аудитория? В упор не вижу.
ответить
Они не могут смириться
Я надеялся, что этот маразм утихнет на второй день, но нет. 12 страниц и уже более 500 комментариев под просто новостью о CMS. Вы звезда, Андрей Викторович :D. Люди буквально не могут смириться с тем, что кто-то все же сделал нормальную книжку и нормальную программу для сайтов. Я такого еще не видел! Там даже кто-то умудрился скинуть какой-то сайт, который на js работает быстрее...э...статических HTML страниц? Градус абсурда накаляется: учить программировать предлагают на ассемблере, с него переходить на питон и сразу использовать го. Ну вот, буду считать посетил зоопарк.
ответить
Re: Они не могут смириться
> Я надеялся, что этот маразм утихнет на второй день
Что вы что вы, это ж лор
> сайт, который на js работает быстрее
Ну, лично я про скорость работы вроде никого не спрашивал. Исполнение на чужом устройстве тьюринг-полного кода, которого владелец устройства на это устройство не ставил своим явным осознанным действием — это преступление, за которое в норме следует давать по меньшей мере лет пять тюрьмы с пожизненным запретом на профессию, и это никакого отношения не имеет к скоростям, да и вообще ни к чему, кроме ровно одного: есть моё, есть чужое, и чужое без спроса трогать нельзя. Это не только браузеры, это ещё и навязываемые обновления софта (любого).
ответить
Re: Они не могут смириться
> какой-то сайт, который на js работает быстрее...э...статических HTML страниц?
Долбоёбы, сэр: страничка-то та действительно закончила загрузку быстрее, чем гостевая на stolyarov.info, с которой её сравнивали... Потому что на ней байтов в 60 (шесть долбаных десятков) раз меньше, да и CSS куда как примитивнее. А имеющая размер, схожий с воспеваемой, страница более старой новости прогружается столько же времени, по крайней мере, моим глазом на моём железе разница незаметна вообще.
ответить
Re: Они не могут смириться
Однако же кое-кого там упорно преследуют умные мысли вроде
Но они всё равно бегают быстрее.
ответить
Re: Они не могут смириться
Здесь дело не в поверхности атаки, как ни странно. Если я только правильно понимаю, как это всё делается, наличие по ту сторону дыры, а равно и рядом с дырой услужливо поднятого, полностью инициализированного и готового к работе (точнее, уже работающего) алгоритмически полного интерпретатора, который к тому же радостно бросается исполнять ваще что угодно, только пришлите — изрядно упрощает всю атаку. Люди ведь не роботы, мало знать, что некая дыра эксплойтабельна, нужно ещё и написать эксплойт, и как-то его скормить ломаемому компьютеру. Чтобы делать это на уровне машинного кода, надо обладать изрядным пространственным воображением и вообще определёнными и довольно редкими качествами. То ли дело, когда можно жабаскрипт даже не инжектить, а просто прислать.
ответить
Re: Они не могут смириться
Андрей Викторович, а как вы вообще относитесь ко всем этим комментам на LOR? Если бы меня какое-то ненулевое количество человек где-то поливали грязью, то я, может быть, и не расстроился бы совсем, но в какой-то степени меня бы это задело.
ответить
Re: Re: Они не могут смириться
Я не сто баксов, чтоб всем нравиться, в особенности тем, кого сам толком за людей не считаю. Это раз. А два — при достижении даже самой небольшой известности подобное в любом случае неизбежно.
ответить
☞ From Anonymous (unverified) Wed Jan 22 08:04:32 2025 UTC
Возможно дело в MIME
Ваш сайт отдаётся веб-сервером как text/html, и браузер рендерит его как HTML, надо отдавать его как application/xhtml+xml (указать в настройках веб-сервера), тогда браузер будет рендерить его как XHTML. По крайней мере в таком режиме браузер начинает ругаться на некорректный XHTML.
Не лишним будет и заменить text/html на application/xhtml+xml здесь:
P.S. Не лишним будет и указывать meta description, meta keywords для оптимизации поисковой выдачи.
ответить
Re: Возможно дело в MIME
> application/xhtml+xml
Дебилизм, конечно (поскольку сам смысл application/* в том, чтобы маркировать контент, предназначенный для обработки внешними приложениями, а не самим браузером), но попробовать можно. Только что-то я сомневаюсь, что прямо все браузеры тут же дружно откажутся обрабатывать атрибуты от html5.
> для оптимизации поисковой выдачи
Хернёй не страдаю и не собираюсь.
ответить
☞ From MikhailM (unverified) Tue Jan 21 17:52:25 2025 UTC
Thalassa CMS 0.3.50: фильтрация атрибутов в тегах
> разрешается только использовать атрибут href в тегах a и атрибуты src и alt в тегах img.
Андрей Викторович, боюсь вы недооцениваете степень повреждения мозга у браузерописателей, они додумались реализовать вызов жабьего скрипта даже через содержимое href. Об этом на ЛОРе написали в обсуждении.
В href можно в качестве значения поместить что-нибудь такое: javascript:alert('Hello') То есть a href="вот это самое" и оно пролезет через фильтры. Не знаю насчет src и img. Скорее всего, более правильно было бы вообще любые html-теги запретить вставлять, а вместо них пресловутый bbcode или markdown или что-то свое.
ответить
Re: Thalassa CMS 0.3.50: фильтрация атрибутов в тегах
Я уже в курсе, да. Ну, здесь у нас премод, так что не пролезет (на onshowpage неприятно было то, что коммент открываешь в очереди на модерацию, а там ОНО).
Свой формат, безусловно, правильнее, но его ещё написать надо. В смысле, парсер для него.
ответить
Re: Re: Thalassa CMS 0.3.50: фильтрация атрибутов в тегах
Есть же, например, отличная программа для конвертации документов pandoc. Его можно использовать для конвертации markdown в html. Да и помимо этого всего наверняка есть множество готовых библиотек на C/C++ для парсинга большинства популярных форматов.
ответить
Re: Re: Re: Thalassa CMS 0.3.50: фильтрация атрибутов в тегах
> отличная программа для конвертации
И что мне с неё? Если кто думает, что я на Талассу соглашусь посадить внешнюю зависимость такого размера, то он зря так думает.
> наверняка есть множество готовых библиотек
Сколько-нибудь приемлемых я не видел, и, более того, я не возьмусь с ходу спроектировать интерфейс такой библиотеки — а это значит, что скорее всего их приемлемых вообще быть не может.
ответить
☞ From lxV (unverified) Tue Jan 21 07:06:59 2025 UTC
relatable
когда-то давно самостоятельно делал комментарии для своего сайта, тоже в фильтре были только теги script и object, а потом зашёл один друг и через атрибуты начал творить "чудеса" - пришлось переписывать)
Знакомая проблема, в общем.
ответить
☞ From noanon (unverified) Mon Jan 20 17:54:55 2025 UTC
.
Вебанутые, не вебанутые, но зато видимо шарят и помогли отловить достаточно серьезную багу.
Как вы это заметили, кстати? На премодерации или уже после?
ответить
Re: .
Когда помогают отловить багу, это выглядит иначе. А когда "шарят" в том, как писать жабаскрипт, обычно это означает, что данную конкретную особь следует травить дустом примерно на правах подвальной крысы.
Естественно, на премоде всё поймалось, там ведь показывается коммент в том виде, в котором он окажется на странице.
ответить
Re: Re: .
"Помогли" - это я про результат, а не способ. Теперь на сайты без премодерации не пролезет всякое.
> А когда "шарят" в том, как писать жабаскрипт, обычно это означает что данную конкретную особь следует травить дустом примерно на правах подвальной крысы.
С одной стороны, конечно, да, но с другой - "чтобы поймать преступника, нужно думать как преступник". Вы же сами пишете, что комбо из комитета и разработчиков браузера подложило такую мину, из чего напрашивается печальный вывод о необходимости изучения подобных тонких вопросов для продолжения комфортного пребывания в веб-пространстве.
ответить
Re: .
Ну оно, конечно, да, но нет (tm). Вот никак я не могу себя заставить испытывать хоть чуть-чуть признательности к этим двум моральным уродам.
А комфортное пребывание в веб-пространстве, похоже, уже невозможно принципиально. Веб должен умереть.
ответить