Andrey Stolyarov

Андрей Викторович Столяров: сайт автора

UPD (21.01.2025): в версии 0.3.50 обнаружились неприятные ошибки, доступен архив версии 0.3.51.

UPD (22.01.2025): и вдогонку версия 0.3.52.

Недавно двое вебанутых дегенератов наглядно продемонтрировали мне, что в комменты можно засунуть жабаскрипт, невзирая на фильтр: теги script и object, конечно, в число разрешённых не входят, но до сей поры Таласса фильтровала только теги (по их именам), а все атрибуты оставляла как есть. Между тем комитетская мразь, придумавшая HTML5, впендюрила туда «событийные» атрибуты вроде onlclick, onpageshow и прочее в таком духе, а лишённые, похоже, последних остатков мозга браузерописатели положили с прибором на то, документ какого типа они рендерят, так что все эти (вроде бы специфичные для HTML5) атрибуты стали «работать» сразу везде. в том числе в XHTML, где их отродясь не было. Плюс к тому я почему-то (не спрашивайте, почему) думал, что из этих атрибутов можно только вызывать функции, описанные где-то ещё, типа если нет скриптов, то и вызывать будет нечего. На самом деле, естественно, туда можно засунуть произвольный скрипт, и если бы я об этом хотя бы на полминуты задумался, то, конечно, догадался бы — но я не задумался.

В общем, пришлось мне несколько дней потратить на переписывание фильтра. Там практически честный конечный автомат, и в нём в итоге стало чуть ли не вдвое больше состояний. Получившуюся в итоге версию я только что выложил под номером 0.3.50.

Если на вашем сайте есть техническая возможность оставить комментарий без прохождения премодерации, обновляйтесь прямо сейчас. Во всех остальных случаях можно так сильно не торопиться. В любом случае скорее всего при переходе на эту версию с предыдущей ничего не сломается. Ну, не должно. В конфигах (и самой Талассы, и CGI) в секции [format] появился параметр tag_attributes, перечисляющий разрешённые атрибуты, но если его нет (а откуда бы ему взяться, пока вы его руками не написали), по умолчанию используется строка a=href img=src img=alt, т.е. в комментах (с точки зрения Талассы — в текстовых файлах с заголовками, где в поле format: присутствует токен tags, предписывающий прогонять контент через фильтр тегов) разрешается только использовать атрибут href в тегах a и атрибуты src и alt в тегах img. Вряд ли в комментах на вашем сайте можно найти что-нибудь ещё, если только среди ваших комментаторов не нашлось больших затейников.

Инджой, короче.


From Anonymous (unverified) Sun Mar 2 22:04:49 2025 UTC pencil

CSP

Если на некотором экземпляре Thalassa CMS не используется жабаскрипт, то можно попросить сервер добавить заголовок Content-Security-Policy: script-src 'none' или аналогичный ему <meta http-equiv> в шаблон - это запретит любое исполнение кода со страницы браузером, включая такие inline-вставки, как onclick в атрибутах.

parent From Andrey V. Stolyarov profile Tue Mar 4 16:22:01 2025 UTC pencil

userpic

Re: CSP

Что значит "если"?! Ни на каком не используется.

Статус заголовочного параметра Content-Security-Policy мне изучать лень, но очень сильно подозреваю, что браузеры его игнорируют.

parent From Anonymous (unverified) Sat Mar 8 11:42:39 2025 UTC pencil

Re: Re: CSP

Если кто и не игнорирует этот заголовок, то браузеры - остальным он ни к чему.

Подозреваю, что 99% браузеров, с которыми приходят к вам на сайт попадают в одну из двух категорий:

  1. не поддерживает ни Content-Security-Policy, ни js+html5 для достаточной для злоумышленника мере;
  2. поддерживает Content-Security-Policy, чтобы полностью отключить скрипты.

parent From Andrey V. Stolyarov profile Sat Mar 8 11:49:52 2025 UTC pencil

userpic

Re: Re: Re: CSP

Подозревать мы можем что угодно, это всё разговоры в пользу бедных. Тут надо либо самим проверять, либо поискать, не проверял ли уже кто-нибудь другой. Лично мне сейчас не до этого.

From Евгений Балов (unverified) Thu Feb 13 10:54:52 2025 UTC pencil

XHTML

Простите за уточнение, но в XHTML есть onclick и всегда был, и никакие комитеты по HTML5 тут не виноваты.

Вот даже в DTD вашей страницы: https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd

 attributes for common UI events
  onclick     a pointer button was clicked

И, в принципе, встречается в стандартах из прошлого века (например, HTML 4.01 из 1999).

parent From Andrey V. Stolyarov profile Thu Feb 13 11:20:21 2025 UTC pencil

userpic

Re: XHTML

Благодарю за уточнение, этого я не знал. В действительности это мало что меняет, фильтры артибутов в Талассе теперь есть (естественно, задаётся список разрешённых), но, по большому счёту, всё равно надо переходить на аналог bbcode. Сейчас, например, автор коммента может сломать всю вёрстку страницы, просто "забыв" закрыть тот или иной тег, а устроить корректное закрытие всего, что пользователь накосячил — это надо чуть ли не весь DTD реализовать, я к такому не готов.

From Гость (unverified) Tue Feb 11 16:27:50 2025 UTC pencil

А есть пользовательские сайты на этой CMS?

На сайте самой CMS в разделе информации о сайтах на ней указаны только ваши сайты, но, как я понимаю, в тот список прям очень тяжело попасть (не прокатят даже аддаптивные к мобилкам сайты, потому что в них явно будет css3).

Так вот, не знаете ли случайно, существуют работающие на талассе сайты, не попавшие в тот список по каким-то критериям? Как часто вообще кто-то присылает сайт и говорит "хочу в список!"? Или все эти новости про

Если на вашем сайте есть техническая возможность оставить комментарий без прохождения премодерации, обновляйтесь прямо сейчас

или

Вряд ли в комментах на вашем сайте можно найти

адресованы самому себе?

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

parent From Andrey V. Stolyarov profile Tue Feb 11 17:01:29 2025 UTC pencil

userpic

Re: А есть пользовательские сайты на этой CMS?

> не прокатят даже аддаптивные к мобилкам сайты, потому что в них явно будет css3

Ничего себе "даже". Если вы имеете в виду media queries, то за такое четвертовать надо по меньшей мере.

NB: сколько видел всякой ерунды на эту тему, нигде нет сколько-нибудь понятного объяснения, что это за viewport и всё прочее. Везде одно и то же: дизайн, видите ли, должен быть адаптивным, поэтому нужно написать вот такие и вот такие заклинания. Что эти заклинания значат (и что будет, в частности, если написать не прямо так, а как-то чуть-чуть по-другому), похоже, не понимают даже те, кто это всё придумал. Что и понятно, когда комитет за что-то берётся, итог немного предсказуем.

> Как часто вообще кто-то присылает сайт и говорит "хочу в список!"?

Не было ни разу :-) Ссылки на сайты присылали по принципу "а я вот какое сделал", но либо вообще ничего не говорили про список, либо (в одном случае) даже попросили ссылку из коммента вытереть, т.е. сайт публике не светить. Вообще есть такое ощущение, что какие-то сайты на Талассе крутятся в даркнетах, там как раз JS не поощряется; но авторы таких сайтов по понятным причинам не набиваются ни в какие списки.

> адресованы самому себе?

Вот уж точно нет. Стоит обратить внимание, во-первых, на активность в гостевухе, все эти люди откуда-то взялись и не похоже, чтобы они просто так развлекались запуском всяких странных софтин. Во-вторых, форматирование комментов в стиле thread было сделано в ответ на feature-request, подкреплённый заметным донатом (на моих собственных сайтах thread-комменты нигде не применяются), так что есть даже люди, готовые расставаться с деньгами.

parent From Anonymous (unverified) Mon Feb 24 18:27:08 2025 UTC pencil

Re: Re: А есть пользовательские сайты на этой CMS?

Чтобы адаптировать сайт к мобилке достаточно <meta name="viewport" content="width=device-width, initial-scale=1">

Никакой CSS тут к черту не нужен.

parent From Andrey V. Stolyarov profile Mon Feb 24 22:08:49 2025 UTC pencil

userpic

Re: Re: Re: А есть пользовательские сайты на этой CMS?

Ага, бессмысленные заклинания писать научились, кнопку "Предпросмотр" нажимать не научились. В следующий раз я поленюсь < руками на &lt; менять.

From rkvg-es (unverified) Wed Jan 29 01:44:02 2025 UTC pencil

опечатка :(

> UPD (22.01.2025): и в догонку версия 0.3.52.

Алексей Викторович, Вы меня простите сердечно, но ведь "вдогонку" же!

parent From Andrey V. Stolyarov profile Wed Jan 29 09:34:37 2025 UTC pencil

userpic

Re: опечатка :(

Факт, спасибо

parent From Paul (unverified) Mon Feb 10 20:15:34 2025 UTC pencil

Re: опечатка :(

И вы меня простите, но ведь "Андрей" же!

parent From Andrey V. Stolyarov profile Mon Feb 10 21:38:32 2025 UTC pencil

userpic

Re: Re: опечатка :(

Самое интересное, что я не заметил. Что-то замыленность глаза совсем зашкаливает.

From vbcnthfkmnth123 (unverified) Wed Jan 22 19:25:59 2025 UTC pencil

теги

Зачем вы используете фильтр для тегов по черным спискам? Почему бы вам не использовать белый список тегов? А все остальные например запретить.

parent From Andrey V. Stolyarov profile Wed Jan 22 20:21:39 2025 UTC pencil

userpic

Re: теги

Даже интересно, откуда вы взяли этот бред. Читать здесь. TLDR: разумеется, я использую именно список разрешённых тегов. Ну, во всяком случае там, где фильтрация включена (читай — в комментах). Тексты, которые пишу лично я сам, фильтрации тегов не подвергаются, что и понятно. Но там, где фильтрация производится, остаются только теги (а теперь ещё и атрибуты) из списка разрешённых, остальные просто молча исчезают.

Вообще вы бы ещё спросили, перестал ли я пить коньяк по утрам. Зла не хватает на такое, ей-богу.

parent From Anonymous (unverified) Wed Jan 22 22:08:01 2025 UTC pencil

Re: Re: теги

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

Ну, а автор комментария также естественно притащил это сюда, не попытавшись открыть код или хотя бы документацию.

parent From Andrey V. Stolyarov profile Wed Jan 22 22:52:14 2025 UTC pencil

userpic

Re: теги

А, ну толпы вебанутых и прочих ньюфагов с лора, конечно, ещё и не такого понапишут и не в такое поверят, да.

From lor (unverified) Wed Jan 22 10:17:57 2025 UTC pencil

Инвалиды умственного труда

Где-то видел ваш комментарий про бОльшую часть LOR-a. После выхода новости о последней версии Thalassa сомнений не осталось.

 "...готов сам подносить вам патроны." (с) lfy192 

parent From Andrey V. Stolyarov profile Wed Jan 22 10:21:06 2025 UTC pencil

userpic

Re: Инвалиды умственного труда

Я, честно говоря, на L.O.R. ходить в последнее время совсем перестал. А что, там кто-то кинул новость про Талассу?

parent From lor (unverified) Wed Jan 22 10:26:45 2025 UTC pencil

Re: Re: Инвалиды умственного труда

Да, эти глупцы поливают вас грязью. Вера в человечество практически уничтожена, они так ничего и не поняли. Тем временем количество комментариев растет, а количество программ, для сборки которых нужен только make + gcc + unix остается прежним. Даже интересно, когда они уже начнут делать что-то полезное?

parent From Andrey V. Stolyarov profile Wed Jan 22 10:43:57 2025 UTC pencil

userpic

Re: Re: Re: Инвалиды умственного труда

Эти? Никогда, разумеется.

Таки любопытство пересилило, сходил глянул. На последней (на текущий момент) странице комментов:

Показано 13 сообщений из 92

(если кто не понял, остальные в игноре). И чего мне туда ходить, когда почти всё в игноре. Мне вот интересно, сам Макском тоже на собственное творение больше не ходит? Или он как-то эти потоки дебилизма ухитряется переваривать? При случае спрошу :-)

parent From Gloria (unverified) Thu Jan 23 15:48:12 2025 UTC pencil

LOR

Однако на LOR-е вас явно любят: за пару дней накомментировали аж на 12 страниц, что в одной теме (про Талассу), что в другой (про учебник).

parent From Andrey V. Stolyarov profile Thu Jan 23 15:55:25 2025 UTC pencil

userpic

Re: LOR

Ну, э... тяжело, наверное, жить с огнемётом в анусе

parent From Anonymous (unverified) Wed Jan 22 11:12:02 2025 UTC pencil

Re: Инвалиды умственного труда

Ага, кинул. В этом топике кто-то даже выдумал, что вы якобы сами эту новость кинули на ЛОРе из-под другого аккаунта в целях самопиара :)

parent From Andrey V. Stolyarov profile Wed Jan 22 11:34:00 2025 UTC pencil

userpic

Re: Инвалиды умственного труда

Ага, и где там моя целевая аудитория? В упор не вижу.

parent From lor (unverified) Thu Jan 23 15:18:35 2025 UTC pencil

Они не могут смириться

Я надеялся, что этот маразм утихнет на второй день, но нет. 12 страниц и уже более 500 комментариев под просто новостью о CMS. Вы звезда, Андрей Викторович :D. Люди буквально не могут смириться с тем, что кто-то все же сделал нормальную книжку и нормальную программу для сайтов. Я такого еще не видел! Там даже кто-то умудрился скинуть какой-то сайт, который на js работает быстрее...э...статических HTML страниц? Градус абсурда накаляется: учить программировать предлагают на ассемблере, с него переходить на питон и сразу использовать го. Ну вот, буду считать посетил зоопарк.

parent From Andrey V. Stolyarov profile Thu Jan 23 16:00:32 2025 UTC pencil

userpic

Re: Они не могут смириться

> Я надеялся, что этот маразм утихнет на второй день

Что вы что вы, это ж лор

> сайт, который на js работает быстрее

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

parent From diesi (unverified) Thu Jan 23 20:34:10 2025 UTC pencil

Re: Они не могут смириться

> какой-то сайт, который на js работает быстрее...э...статических HTML страниц?

Долбоёбы, сэр: страничка-то та действительно закончила загрузку быстрее, чем гостевая на stolyarov.info, с которой её сравнивали... Потому что на ней байтов в 60 (шесть долбаных десятков) раз меньше, да и CSS куда как примитивнее. А имеющая размер, схожий с воспеваемой, страница более старой новости прогружается столько же времени, по крайней мере, моим глазом на моём железе разница незаметна вообще.

parent From diesi (unverified) Thu Jan 23 20:40:23 2025 UTC pencil

Re: Они не могут смириться

Однако же кое-кого там упорно преследуют умные мысли вроде

Основная поверхность атаки это JS engine, парсеры DOM, CSS и прочее

Но они всё равно бегают быстрее.

parent From Andrey V. Stolyarov profile Thu Jan 23 21:43:41 2025 UTC pencil

userpic

Re: Они не могут смириться

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

parent From Anonymous (unverified) Sat Feb 8 18:34:00 2025 UTC pencil

Re: Они не могут смириться

Андрей Викторович, а как вы вообще относитесь ко всем этим комментам на LOR? Если бы меня какое-то ненулевое количество человек где-то поливали грязью, то я, может быть, и не расстроился бы совсем, но в какой-то степени меня бы это задело.

parent From Andrey V. Stolyarov profile Sat Feb 8 19:13:37 2025 UTC pencil

userpic

Re: Re: Они не могут смириться

Я не сто баксов, чтоб всем нравиться, в особенности тем, кого сам толком за людей не считаю. Это раз. А два — при достижении даже самой небольшой известности подобное в любом случае неизбежно.

From Anonymous (unverified) Wed Jan 22 08:04:32 2025 UTC pencil

Возможно дело в MIME

Ваш сайт отдаётся веб-сервером как text/html, и браузер рендерит его как HTML, надо отдавать его как application/xhtml+xml (указать в настройках веб-сервера), тогда браузер будет рендерить его как XHTML. По крайней мере в таком режиме браузер начинает ругаться на некорректный XHTML.

Не лишним будет и заменить text/html на application/xhtml+xml здесь:

meta http-equiv="Content-Type" content="text/html; charset=koi8-r"

P.S. Не лишним будет и указывать meta description, meta keywords для оптимизации поисковой выдачи.

parent From Andrey V. Stolyarov profile Wed Jan 22 09:49:19 2025 UTC pencil

userpic

Re: Возможно дело в MIME

> application/xhtml+xml

Дебилизм, конечно (поскольку сам смысл application/* в том, чтобы маркировать контент, предназначенный для обработки внешними приложениями, а не самим браузером), но попробовать можно. Только что-то я сомневаюсь, что прямо все браузеры тут же дружно откажутся обрабатывать атрибуты от html5.

> для оптимизации поисковой выдачи

Хернёй не страдаю и не собираюсь.

From MikhailM (unverified) Tue Jan 21 17:52:25 2025 UTC pencil

Thalassa CMS 0.3.50: фильтрация атрибутов в тегах

> разрешается только использовать атрибут href в тегах a и атрибуты src и alt в тегах img.

Андрей Викторович, боюсь вы недооцениваете степень повреждения мозга у браузерописателей, они додумались реализовать вызов жабьего скрипта даже через содержимое href. Об этом на ЛОРе написали в обсуждении.

В href можно в качестве значения поместить что-нибудь такое: javascript:alert('Hello') То есть a href="вот это самое" и оно пролезет через фильтры. Не знаю насчет src и img. Скорее всего, более правильно было бы вообще любые html-теги запретить вставлять, а вместо них пресловутый bbcode или markdown или что-то свое.

parent From Andrey V. Stolyarov profile Tue Jan 21 19:12:30 2025 UTC pencil

userpic

Re: Thalassa CMS 0.3.50: фильтрация атрибутов в тегах

Я уже в курсе, да. Ну, здесь у нас премод, так что не пролезет (на onshowpage неприятно было то, что коммент открываешь в очереди на модерацию, а там ОНО).

Свой формат, безусловно, правильнее, но его ещё написать надо. В смысле, парсер для него.

parent From a (unverified) Tue Jan 21 23:48:56 2025 UTC pencil

Re: Re: Thalassa CMS 0.3.50: фильтрация атрибутов в тегах

Есть же, например, отличная программа для конвертации документов pandoc. Его можно использовать для конвертации markdown в html. Да и помимо этого всего наверняка есть множество готовых библиотек на C/C++ для парсинга большинства популярных форматов.

parent From Andrey V. Stolyarov profile Wed Jan 22 09:43:19 2025 UTC pencil

userpic

Re: Re: Re: Thalassa CMS 0.3.50: фильтрация атрибутов в тегах

> отличная программа для конвертации

И что мне с неё? Если кто думает, что я на Талассу соглашусь посадить внешнюю зависимость такого размера, то он зря так думает.

> наверняка есть множество готовых библиотек

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

From lxV (unverified) Tue Jan 21 07:06:59 2025 UTC pencil

relatable

когда-то давно самостоятельно делал комментарии для своего сайта, тоже в фильтре были только теги script и object, а потом зашёл один друг и через атрибуты начал творить "чудеса" - пришлось переписывать)

Знакомая проблема, в общем.

From noanon (unverified) Mon Jan 20 17:54:55 2025 UTC pencil

.

Вебанутые, не вебанутые, но зато видимо шарят и помогли отловить достаточно серьезную багу.

Как вы это заметили, кстати? На премодерации или уже после?

parent From Andrey V. Stolyarov profile Mon Jan 20 17:58:49 2025 UTC pencil

userpic

Re: .

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

Естественно, на премоде всё поймалось, там ведь показывается коммент в том виде, в котором он окажется на странице.

parent From noanon (unverified) Mon Jan 20 18:13:45 2025 UTC pencil

Re: Re: .

"Помогли" - это я про результат, а не способ. Теперь на сайты без премодерации не пролезет всякое.

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

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

parent From Andrey V. Stolyarov profile Mon Jan 20 18:18:13 2025 UTC pencil

userpic

Re: .

Ну оно, конечно, да, но нет (tm). Вот никак я не могу себя заставить испытывать хоть чуть-чуть признательности к этим двум моральным уродам.

А комфортное пребывание в веб-пространстве, похоже, уже невозможно принципиально. Веб должен умереть.


pencil

пояснение


Вы находитесь на официальном сайте Андрея Викторовича Столярова, автора учебных пособий по программированию и информационным технологиям.

Если вы искали сайт замечательного писателя-фантаста Андрея Михайловича Столярова, то вам, к сожалению, не сюда.

Андрей Михайлович Столяров в библиотеке Мошкова

Авторские права © Андрей Викт. Столяров, 2009 — 2025