Так и знал, что будет использовано какое-то магическое свойство, которое в половине браузеров не работает. Ну и за одно выдержки с MDN:
— Не применяйте will-change к большому числу элементов.
— Используйте умеренно.
— Не применяйте will-change к элементам для выполнения преждевременной оптимизации.
— Дайте ему достаточно времени, чтобы работать.
Ухты, webperf 101 в 2016 году на хабре, вот это да!
И еще забавно читать про «будущее за will-change». Это казалось будущим 2 года назад, но по итогам от этого свойства было скорее больше проблем, чем пользы, и оно все еще не поддерживается в IE/Edge, так что лучше по-стариночке юзать translate3d() там, где это необходимо.
Конкретные IQ тесты могут и устареть. Но принцип всё равно останется прежним и в новых тестах. Поскольку интеллект — это способность распознавать закономерности/контексты (т.е. способность к самообучению на произвольных данных), то общая идея измерения уровня интеллекта всё равно должна сводиться к тому, чтобы выявить, насколько сложные закономерности человек может распознать. Даже у обезьян способности к обучению проверяют через умение распознавать закономерности. Конечно, обезьян тестируют чуть-чуть по-другому. У них нет такой мелкой шкалы уровней, как IQ, а есть всего три уровня обучаемости. На самом деле, даже два, поскольку третьего уровня ни одна обезьяна пока не продемонстрировала. Есть даже гипотеза о том, что животные в принципе не способны к третьему уровню, что это особенность людей (кстати, далеко не всех… но многих). Но в любом случае концептуально тест для людей и тест для обезьян ничем не отличаются. Всё равно решение теста сводится к выявлению закономерностей.
Если не изменяет память, то на данный момент многие ученые заявляют о, по сути, бесполезности IQ метрик, так как тесты очень старые и не соответствуют действительному историческому контексту. В общем, обновить их надобно.
Неспособность распознать контекст — это всегда следствие низкого уровня интеллекта. Неслучайно тесты IQ построены таким образом, чтобы выявлять способности испытуемых распознавать закономерности. Закономерность — это когда смысл отдельных элементов зависит от контекста. Чем более запутанную закономерность человек может распознать, тем более широкий контекст он способен схватывать. И эта его способность численно выражается через коэффициент IQ.
Проблема контекста — это процесс воспитания. Для человека это занимает годы учебы и практики в конкретной области,
Причем смена области деятельности низводит, как правило, на нулевой уровень понимания.
То есть непонимание контекста, точнее его невоспириятие, это не признак низкой интеллектуальности, а отсутвие ус тойчивых когнитивных связей.
Заметим, что человек часто действует стереотипно, не проявляя интеллекта, как возможности творческой оценки ситуации.
Это и дает обычно преимущество компьютеру в использовании стереотипов, как возможности более быстрого их перебора.
Очень порадовала оговорка во врезке про то, что понимание языка искусственным интеллектом так трудно запрограммировать из-за того, что смысл отдельных слов зависит от контекста. С учетом того, что суть естественного интеллекта состоит в способности быстро и точно распознавать контекст, получается, что понимание языка искусственным интеллектом так трудно запрограммировать, потому что трудно запрограммировать интеллект. Кто бы мог подумать? Оказывается, при программировании искусственного интеллекта легко запрограммировать только искусственность, а вот с интеллектом уже намного сложнее.
Мой любимый пример про смысл слов, который зависит от контекста: «Американцы слишком много жрут». На форуме хейтеров Америки эта фраза будет означать «Граждане США употребляют слишком много пищи». А на автомобильном форуме эта же фраза будет означать «Автомобили американского производства потребляют слишком много топлива». У естественного интеллекта нет никаких проблем с пониманием, поскольку он обычно точно знает, на каком именно форуме он сейчас бессмысленно тратит время.
1. Это не вина Битрикса, что разработчики не думают головой. Такое можно сделать везде.
2. htmlspecialchars и т.п. — не панацея от xss.
3. Часто нужно хранить сырые данные.
Не надо версию, от греха подальше.
В Битрикс сказать можно, хотя на практике не все обновляются и т.д.
По этой платформе, у меня самого достаточно «непубличного» материала, в Битрикс отдаю, по мере обнаружения и его актуальности.
Ничего себе! А когда это было?
Из смешного, в последнее время, только обход фильтра по типу ononclick='JS', когда фильтр Битрикс синтаксически 'on' отрезал, для блокировки той-же XSS. Сейчас, конечно, фильтр проактивки стал достаточно серьезным.
Был как-то забавный случай: сайт на «1С-Битрикс: Корпоративный портал», форма загрузки файлов, все потенциально опасные расширения фильтровались, всё ок. Но. Заметил, что если в имя файла добавить, например, символ процента (%), то данный символ при загрузке заменяется на случайный символ [a-z]. Сделал 30 файлов (с запасом, ага) вида <1-shell.ph%>, загрузил в форму и получил один из файлов <1-shell.php>, т.е. получил шелл. Конечно, проблема еще в том, что было разрешено исполнение файлов из папки </upload/>. Это я к тому, что фильтрации расширений мало.
Если бы разработчики битрикса использовали нормальную архитектуру, то это бы позволило внедрить TDD который бы еще на этапе разработки исключал 85% — 95% багов и брешей безопасности. А данный костыль в виде «авто-тесты кода» не более чем «подорожник» который просто не способен качественно обработать кучи строк низкокачественного кода самого битрикса.
В Битриксе всё ещё хитрее, специально для таких вот «специалистов».
Данные фильтруются в контроллере («компоненте» в терминах битрикса), чтобы мега-разработчик шаблона выводил $arUser[«NAME»] и не задумывался о фильтрации. Но для тех случаев, когда нужны нефильтрованные данные, компонент добавляет специальный ключ $arUser["~NAME"], о котором знают не только лишь все.
Встречал как-то эксплуатацию подобной html инъекции в почте мейл.ру года 4 назад.
В письмо встраивался html + inline css код, который добавлял прозрачный слой с position:absolute на весь экран, обернутый в ссылку на фейк сайт злоумышленника.
Так, как слой перекрывал весь интерфейс почты, по любому клику в любом месте происходил редирект на фейк, который выглядел как страница логина в мейл.ру и невнимательный пользователь думал, что его просто выкинуло из сессии при входе в просмотр письма и клику например на «Входящие». Я к тому, что сценарии эксплуатации подобных вещей имеются, но немало зависит от контекста. В почте это было опасно.
Все верно:
1. У «коробки» Битрикс этой проблемы нет.
2. API Битрикс действительно позволяет совершать ошибки разработчикам.
3. На счет уязвимости типа «недалекий разработчик», не соглашусь с Вами.
Таким образом, из Вашей статьи и дальнейшего обсуждения следует:
коробочные решения и системные компоненты защищены и уязвимость в них не проявляется
API Битрикс позволяет разработчикам совершать ошибки при разработке собственных решений и компонентов
Вывод: в API Битрикс существует уязвимость (уязвимость типа «недалекий разработчик», видимо)
Что интересно — криворукие разработчики встречаются на любой платформе, так почему именно Битрикс? Возможно потому, что просто очередную статью о фильтрации данных форм никто бы и читать не стал. Впрочем, как Вы верно заметили, это мое мнение, как и все, написанное мной ранее — нет нужды лишний раз это подчеркивать. ;)
Просто интересно, а что могут сделать в Битриксе?
Их стандартные компоненты этой уязвимостью не страдают. В админке кстати тоже.
Уязвимы только сайты, которые работают напрямую с API (моделью), минуя стандартные компоненты (контроллеры) и вьюхи (шаблоны). И при этом не фильтруют данные.
Т.е. криворукие быдлокодеры накосорезили, но виноват, разумеется, Битрикс.
Самое смешное, что Битрикс ничего в этом случае сделать не может. Ещё раз, API — это модель, её задача хранить данные как есть, и в ней, вообще говоря, ошибок нет. Добавлять в неё фильтрацию, htmlspecialchars и т.п. — нельзя, это сломает вообще кучу всего.
— Не применяйте will-change к большому числу элементов.
— Используйте умеренно.
— Не применяйте will-change к элементам для выполнения преждевременной оптимизации.
— Дайте ему достаточно времени, чтобы работать.
И еще забавно читать про «будущее за will-change». Это казалось будущим 2 года назад, но по итогам от этого свойства было скорее больше проблем, чем пользы, и оно все еще не поддерживается в IE/Edge, так что лучше по-стариночке юзать translate3d() там, где это необходимо.
Причем смена области деятельности низводит, как правило, на нулевой уровень понимания.
То есть непонимание контекста, точнее его невоспириятие, это не признак низкой интеллектуальности, а отсутвие ус тойчивых когнитивных связей.
Заметим, что человек часто действует стереотипно, не проявляя интеллекта, как возможности творческой оценки ситуации.
Это и дает обычно преимущество компьютеру в использовании стереотипов, как возможности более быстрого их перебора.
Мой любимый пример про смысл слов, который зависит от контекста: «Американцы слишком много жрут». На форуме хейтеров Америки эта фраза будет означать «Граждане США употребляют слишком много пищи». А на автомобильном форуме эта же фраза будет означать «Автомобили американского производства потребляют слишком много топлива». У естественного интеллекта нет никаких проблем с пониманием, поскольку он обычно точно знает, на каком именно форуме он сейчас бессмысленно тратит время.
2. htmlspecialchars и т.п. — не панацея от xss.
3. Часто нужно хранить сырые данные.
В ваших конфигах для веб-серверов не учтены частные случаи:
В Битрикс сказать можно, хотя на практике не все обновляются и т.д.
По этой платформе, у меня самого достаточно «непубличного» материала, в Битрикс отдаю, по мере обнаружения и его актуальности.
Из смешного, в последнее время, только обход фильтра по типу ononclick='JS', когда фильтр Битрикс синтаксически 'on' отрезал, для блокировки той-же XSS. Сейчас, конечно, фильтр проактивки стал достаточно серьезным.
Данные фильтруются в контроллере («компоненте» в терминах битрикса), чтобы мега-разработчик шаблона выводил $arUser[«NAME»] и не задумывался о фильтрации. Но для тех случаев, когда нужны нефильтрованные данные, компонент добавляет специальный ключ $arUser["~NAME"], о котором знают не только лишь все.
Данные в базе должны храниться в том виде, в котором их ввел пользователь. Фильтровать только при выводе.
В письмо встраивался html + inline css код, который добавлял прозрачный слой с position:absolute на весь экран, обернутый в ссылку на фейк сайт злоумышленника.
Так, как слой перекрывал весь интерфейс почты, по любому клику в любом месте происходил редирект на фейк, который выглядел как страница логина в мейл.ру и невнимательный пользователь думал, что его просто выкинуло из сессии при входе в просмотр письма и клику например на «Входящие». Я к тому, что сценарии эксплуатации подобных вещей имеются, но немало зависит от контекста. В почте это было опасно.
1. У «коробки» Битрикс этой проблемы нет.
2. API Битрикс действительно позволяет совершать ошибки разработчикам.
3. На счет уязвимости типа «недалекий разработчик», не соглашусь с Вами.
Дело в том, что изначально, в документации к API Битрикс:
http://dev.1c-bitrix.ru/api_help/forum/developer/cforumtopic/getlist.php
Были приведены примеры использования, а именно:
После того, как информацию по проблеме была предоставлена Битрикс, пример был «отредактирован»:
Поэтому, я не согласен с Вами, только в части «криворуких разработчиков», а так, все верно.
Что интересно — криворукие разработчики встречаются на любой платформе, так почему именно Битрикс? Возможно потому, что просто очередную статью о фильтрации данных форм никто бы и читать не стал. Впрочем, как Вы верно заметили, это мое мнение, как и все, написанное мной ранее — нет нужды лишний раз это подчеркивать. ;)
Их стандартные компоненты этой уязвимостью не страдают. В админке кстати тоже.
Уязвимы только сайты, которые работают напрямую с API (моделью), минуя стандартные компоненты (контроллеры) и вьюхи (шаблоны). И при этом не фильтруют данные.
Т.е. криворукие быдлокодеры накосорезили, но виноват, разумеется, Битрикс.
Самое смешное, что Битрикс ничего в этом случае сделать не может. Ещё раз, API — это модель, её задача хранить данные как есть, и в ней, вообще говоря, ошибок нет. Добавлять в неё фильтрацию, htmlspecialchars и т.п. — нельзя, это сломает вообще кучу всего.