Всем привет!
Новый релиз, как всегда, внезапно :) На этот раз основной причиной послужили большое количество репортов безопасности. Казалось бы, с чего вдруг ;-) Но не всё так страшно.
Более года назад мы сделали небольшой лендинг для англоязычной аудитории и демо к нему. Через какое-то время туда «налетели» любители потестировать, чему мы, в общем-то, были рады. Демо раз в пол часа автоматически обнулялось, тестеры — тестили. А потом пошли репорты с сайта huntr.dev. Поначалу я даже не понял что за репорты и с чего вдруг кто-то бесплатно решил делиться информацией. Как оказалось, этот сервис сам мотивирует своих пользователей (деньгами и внутренним рейтингом) искать уязвимости в open source продуктах. Мы, разумеется, не против. На текущий момент обработано порядка 30 репортов, из них подтверждённых (и исправленных) около 25. Неплохой результат. Но сильно повода для паники нет. Итак, что конкретно мы исправили:
- Исправлена Blind SQL Injection в фильтрах датагридов в админке;
- Исправлена Blind SQL Injection в автозавершении ввода компонента тегов;
- Исправлена Blind SSRF при загрузке фото по ссылке, переписан класс cmsUploader;
- Secure flag для Cookie теперь ставится всегда, если в конфигурации сайта указан протокол HTTPS;
- Исправлены все известные XSS в админке;
- Исправлена проблема и её последствия, когда подстановкой в url можно было отправить самому себе личное сообщение;
- Теперь нельзя изменить пароль на тот же;
- Идентификатор сессии теперь меняется после авторизации/выхода;
- Администраторы теперь не могут со стороны сайта менять пароли друг другу (в админке эта возможность оставлена, т.к. её можно закрыть по ip адресу);
- HTML поля в настройках типов контента (описание, наборы, фильтры) теперь сохраняются через типограф;
- Для строковых полей, если в нём не запрещены HTML теги, значения обрабатываются типографом;
- Редактор Redactor пропатчен из-за возможной XSS.
Если вы не хотите обновляться или нет такой возможности, то из самого опасного — замените этот файл по пути /system/controllers/tags/actions/autocomplete.php. Тут была слепая SQL инъекция. А также отключите для полей изображений добавление по ссылке. В остальном 90% XSS которые мы закрыли, касались админки и в целом их опасность сильно преувеличена. Однако мы старались давать обратную связь хантерам и закрывать/исправлять всё обнаруженное, тем самым мотивируя их на новые поиски, возможно, более опасных уязвимостей. В целом, считаю это отличный опыт и неплохой результат за 70$ (цена трёх доменов, которые мы купили). Уверен, хантеры продолжат поиски, а мы продолжим исправлять то, что они находят.
Другие изменения
- Обновление событий в админке теперь исключает выключенные компоненты;
- Код инвайта теперь сохраняется в Cookie, что по сути является реферальной системой;
- SEO поля в записях типов конетнта теперь мультиязычные;
- Корректная обработка ссылок с хэшами (знак решётки) в пунктах меню;
- Исправлена проблема с ограниченным количеством записей в некоторых разделах админки после обновления до 2.16.0;
- Для поля «Изображение» добавлены опции «Включить редактор изображений перед загрузкой», которые позволяют обрезать изображение перед загрузкой;
- Класс Simple PHP YAML обновлён до актуальной версии;
- Toastr и jQuery обновлены до актуальных версий;
- Мелкие правки установщика InstantCMS.
Как установить обновление InstantCMS
Важно! Убедитесь, что сейчас вы используете версию 2.16.0, иначе, обновитесь сначала до неё.
Перед началом обновления обязательно сделайте резервную копию своего сайта и дамп базы данных. Мы не несем никакой ответственности за любые потери данных, произошедшие в результате неправильных действий при обновлении. Структура базы данных в этой версии не менялась.
- Отключите кеширование в настройках сайта;
- Отключите объединение js и css в настройках сайта;
- Если вы используете свой шаблон и в нем есть файлы, присутствующие в пакете обновления, то обновите их;
- При возникновении «белого экрана» категорически читать здесь;
- Для тех, у кого свой шаблон у нас есть статья как быть, если в обновлении CMS есть изменения в шаблоне, рекомендуем к прочтению.
Если в вашем шаблоне присутствуют JavaScript файлы со своими правками (взяты из /templates/default/js/ или /templates/modern/js/), замените/смержите их из пакета обновления. Не забывайте о сбросе кэша браузера абстрактным счетчиком.
Механизм установки обновлений подробно описан по этой ссылке в документации.
Пакет обновления для ручной установки можно скачать по этой ссылке.
Спасибо, что выбираете InstantCMS.
Добра и Мира ☮
P.S. Мне тут подсказали, что сегодня день программиста оказывается, отличное совпадение. Поздравляю всех причастных!
Поддержите проект
Вы можете стать официальным спонсором или отправить донат, в том числе в криптовалюте. Вы также здорово поможете, если поставите звезду на GitHub, для нас это очень важно.
хорошая новость на сон грядущий, спасибо за работу
К вашему дню рождению как раз) Поздравляем!
Благодарю!
Вау, круто. СПАСИБО
Вау супер и Вас с праздником, прям супер событие!!! Спасибо!
Спасибо за работу Fuze и спасибо тестерам huntr.dev за бесплатный аудит безопасности 👍
Можно поподробней? Желательно для админки которая на Английском
Как это отключить в tinyMCE?
Для редактора tinyMCE делать ничего не надо.
Да что мне это мену. Как мне до него добраться? Нашел. В группах.
Components -> Groups -> Group logo
Спасибо за обновление. Безопасность важнее всего! А не подскажете, случаем, что с обновлением премиум компонентов iVideo и instantMaps. Из-за отсутствия информации о доступности обновлений не могу даже до 2.16.0 обновиться. Слишком много проблем с хуками и отсутствие поддержки новой темы админки сильно напрягает.
Я готов поработать с компонентами для их совместимости с 2.16.0, однако исходный код закрыт. Мне они оба нужны, сильно проблематично отказываться от функционала.
И InstantVideo и тем более InstantMaps поддерживают давно новую админку. Для InstantVideo нет поддержки 2.16.0 и шаблона modern. Когда я такое обновление сделаю — не знаю. Все файлы шаблонов открыты.
Для InstantVideo много ошибок формата
Их исправить самостоятельно невозможно, будем ждать обновления.
Касательно шаблона админки InstantMaps ещё терпимо, но есть над чем поработать.
А вот с InstantVideo совсем плохо, особенно некоторые раздел «Очередь обработки», где вообще ничего невозможно сделать без смены дизайна.
Вообщем InstantVideo очень требует обновления. И я надеюсь, у вас будет время его сделать. Спасибо заранее.
Это и на 2.14 можно сделать?
Спасибо за вашу работу!
Да
Спасибо большое за обновление! на 2.13 подойдет или надо обязательно обновить на 2.14 и далее уже загружать файл?
Просто замените файл, сделав бэкап старого и проверьте автозавершение тегов. Дольше спрашиваете.
После обновления перестали сохранятся чекбоксы в настройках доступа полей и вообще в админке и ругается на ошибку
В общем ошибка 503 была из-за отключенного ТК. А чекбоксы следствие кривого обновления ранее, был старый файл system/fields/listgroups.php, после замены на свежий все появилось. Проблему помог решить Zau4man, за что ему огромное спасибо.
Попробовал на локальном обновиться с 2.16.0 через админку, выдало такое:
Ребята, кто нибудь подскажите что это за ошибки… и откуда configs.php...
configs.php появился ещё в 2.16.0. Почему у вас так, я не могу знать. Вероятно вы решили что файл configs.php лишний и удалили его.
Странно… вроде не удалял… наверное обновил до 2.16.0 криво. Сейчас поставлю чистую 2.16.0 и снова попробую проделать все.
Прошу прощения, обновлял с какой то левой версией с github, а не с чистой 2.16.0 — сейчас все четко обновилось.
Благодарю за обновление
После обновления нигде не работает кнопка Сохранить
Не знаю о чём речь, но после обновления везде работает кнопка сохранить.
prnt.sc/XRoBRCX_HkwL
В админке не могу сохранить изменения. Кнопка Сохранить не работает. Не реагирует.
Пока из предположений, что у вас включена мультиязычность, но обязательные поля на других языках не заполнены.
Поэтому кнопка не нажимается, ожидая заполнения обязательных полей
Благодарю. Так и есть. Вспомнил, что такая проблема была у меня. Я удалил папку EN, при обновлении папка опять загрузилась в директорию languages, а строки EN в настройках остались пустыми, поэтому не сохранялся.
Супер, спасибо. А исправлено жуткого подвисания страниц на сайтах с большими базами? Если, к примеру 100k записей, то вся пагинация, да и главная пролистывается с задержкой до 4-6 сек. Я уже год ищу, консультируюсь и не могу решить эту проблему. То что у меня что-то неправильно настроено, ответ хороший. Но у меня мощный дорогой сервер и не самые глупые специалисты. И все как один заявляю мол это особенность движка. Неплохая такая особенность :) Записи заливались на чистую систему без всяких дополнений и если при 10k записей все в летает, то при 100k записей все лагает… Размер базы не превышает 200MB. А так спасибо большое за Ваши труды.
Вот тут prefitchi.ru/hotels 170к записей легко справляются с вашей «особенностью» движка. При этом второй из самых дешовых хостинг на бегете и без поддержки их специалистов.
На этом сайте вся база 1Гб. 300К личных сообщений, 300К постов на форуме, 75К комментариев. Я к тому, что размер базы в вашем случае мизерный. Более того, любой специалист, кто мало мальски соображает, учитывая что у вас мощный и дорогой сервер, затюнит MySQL и/или добавит недостающие индексы. Да эту базу можно вообще всю в память выкинуть, я не могу знать что у вас тормозит и почему. По кол-ву записей в ТК: у меня есть проект с 520К записей и всё работает быстро. Описанное вами точно не «особенность движка».
Хотя всё таки предположу, что если поставить некоторые сторонние дополнения авторы, которых их забросили и которые в списках к каждой записи генерируют по три запроса к базе данных, которые дублируются в каждой записи их этого списка, то да, база устанет их обрабатывать.
Выглядит это как-то так
из них 117 генерирует одно поле в 39 записях списка.
Подскажите! Проблема после обновления. Не загружаются файлы
Проблема так и не решилась?
Начиная с этой версии тип файла определяется по его сигнатуре. Также убедитесь, что в файле system/config/mimetypes.php есть нужные тип и расширение.
docx перестал грузиться
Хорошее обновление,
Раз песня зашла про типограф и обработку полей типографом.
Есть ли возможность при установке галки «Обрабатывать типографом» вывести поле или значения, список… какие значения обрабатывать?
То есть отображаем, что сейчас разрешено например: <iframe </iframe> и дописываем чего нет — для специфичных проектов. Элементарно нет по умолчанию вставки видео с инстаграма например.
Получается надо нырять в файл и проставлять (прописывать разрешения (расширения там)).
Про улучшение работы типографа разговоры ведутся давно github.com/instantsoft/icms2/issues/923
Видимо, надо делать свой компонент. Но пока по коду непонятно, как и свои теги отловить, и типографу не помешать.
Без типографа текст автоматически становится небезопасным, и оставлять поле без типографа можно только в том случае, когда в него пишут только доверенные лица.
Здравствуйте.
Текст вопроса:
Имеется фрагмент кода:
На 2.16.0 все работает. На 2.16.1 имеем вот такой результат:
Откуда растут ноги?
Благодарю за ответ.
А что делать если я заранее не знаю тип файла? Я ошибаюсь или в файле system/core/uploadfile.php строки
// Пускаем любые, если не указано
if ($this->allowed_mime === null) {
return true;
}
должны работать, но не работают?
Здесь вы указываете какие типы файлов пользователю разрешено будет загружать, а не те какие он хочет загружать.
Донат отправлен. Fuze, спасибо за то что не забываете развивать систему.
Хорошая новость, мы тоже «за»)) Обновление прошло без проблем.
Спасибо!
Tinymce загрузка файлов не работает в опере(Версия:95.0.4635.84 Версия Chromium:109.0.5414.120), в консоли выдает ошибку:
В гуглхроме, таже ошибка в консоли, но при этом появляется окно загрузки файла и сам файл загружается.
Без каких-либо подробностей, скриншотов (например ответа от url загрузки файла в консоли браузер) и другой вспомогательной информации мне сложно что-то сказать.
Установил инстант 2.16.1, в найстройках редактора по умолчанию(Tinymce) включил плагин «icmsinsertfile» выставил нужные расширения файлов для требуемых групп.
Браузер опера, винда 10х64
Браузер хром, винда 10х64
в демоновости, выбираем создать ссылку и кликаем по иконке загрузки файла
далее видим, в консоли браузера ошибку
и окно ошибки редактора «Upload error»
при этом файл можно выбрать, он загрузится и ссылка на него работает.
Теперь понятно. Исправим. Плагин был сделан наспех, в нём есть и другие ошибки.
Столкнулся с такой проблемой:
Создаю поле местоположение страна — country, вывожу его с фильтре.
В списке контента выбираю фильтрацию по другим полям, поле страна не трогаю, но оно автоматически попадает в фильтрацию со значением =0 (в урл country =0)
Заметил, что данная проблема стала наблюдаться с версии 2.16.0
Откройте файл /system/fields/city.php и строку
Заменить на
Отредактировал строки, автоматически страну в фильтр не добавляет. Но теперь, если выбрать только страну, то добавляет регион со значением = 0 и записи соответственно не находит
Здесь также замените '0' на ''
Спасибо огромное!!!👍
Есть досадный баг — если установить чистый InstantCMS, и сразу накатить обновление — то потом не не импортирует схему(*.yaml) в виджетах и выдает ошибку: «неверный формат файла»
Этот вопрос не давно обсуждали на форуме, есть решение от Zau4man.
Спасибо
Скажите после установки какие должны быть права на папки и файлы? Меня интересует права 777 на папки и файлы 666, где они должны быть установлены
docs.instantcms.ru/manual/install
Там на время установки. А после?
Прочитайте внимательно. Ответ на ваш вопрос в инструкции по установке по ссылке выше.
Это единственное предложении во всей инструкции про права на время установки.
С этим понятно. А после установки cache и upload должны стоять 777? И ещё на счёт этого файла theme_modern.yml если 666 на него не установлен то изменения в теме не возможно произвести
На время установки права на файлы и папки, должны быть 777. Потом меняете папки на 755, файлы на 644. Папки — кэш и загрузки оставляете 777, только в них файлы Хтаццес поменяйте на 644.
Здравствуйте!
Инфо не нашел.
На 2.16.1, чистая, при включенной отладке и создании поля такая ошибка, но поле создается.
Notice: Undefined index: title in /system/traits/controllers/actions/formFieldItem.php on line 224
Warning: Cannot modify header information — headers already sent by (output started at /system/traits/controllers/actions/formFieldItem.php:224) in /system/core/controller.php on line 1091
Подскажите, где что поправить
Наверное, лучше вопрос на форме задайте, откройте новую тему.
Поправить не получиться это нужно разработчикам сделать проверку на наличие индекса в массиве в скрипте. Это не ошибка если что, а просто предупреждение что происходит обращение к элементу массива которого нет.
Благодарю за ответ!
То есть самостоятельно сделать эту проверку не выйдет?
можно и самому исправить.
ок, как это исправить?
Замените в этом файле
на
Благодарю!
Пытаюсь запустить задачи системной очереди через планировщик
Notice: Undefined offset: 6258 in /home/d/decoy/sr52.info/public_html/system/core/queue.php on line 122 Notice: Trying to access array offset on value of type null in /home/d/decoy/sr52.info/public_html/system/core/queue.php on line 180 Warning: Cannot modify header information — headers already sent by (output started at /home/d/decoy/sr52.info/public_html/system/core/queue.php:122) in /home/d/decoy/sr52.info/public_html/system/core/controller.php on line 1091
или такое
Не знаю с какой версии пошло но заметил на этой.
Раньше(например на 2,14,1) «session_id()» была един как для авторизованного пользователя так и для гостя. И привязавшись к нему можно было например гостю сделать добавление товаров в корзину и после авторизации подгружать их же т.к. сессия была едина, а сейчас при авторизации и разлогивании «session_id()» принудительно обновляется каждый раз и данная фишка уже не прокатит.
В сессиях нашел «csrf_token» он вроде как не реагирует на действия авторизации и думаю править свой код под него вместо «session_id()». Планируется ли в последующих релизах что то делать с параметром сессии «csrf_token» и лучше переписать код под куки вместо сессий?
Это точно случилось на 2.16.0/1 и связано с безопасностью сайта.
csrf_token предназначен для проверки «гуляющих» на сайте данных. Его для сбора товаров в корзине однозначно нельзя использовать. Разве что проверять, что корзина принадлежит вашему сайту. Поэтому для таких случаев лучше использовать свою куку или свои данные в сессии, если есть ограничения по времени работы с корзиной.
Warning: Use of undefined constant LANG_PARSER_IMAGE_ALLOW_IMAGE_CROPPER — assumed 'LANG_PARSER_IMAGE_ALLOW_IMAGE_CROPPER' (this will throw an Error in a future version of PHP) in .ru/public_html/system/fields/image.php on line 59
Warning: Use of undefined constant LANG_PARSER_IMAGE_IMAGE_CROPPER_ROUNDED — assumed 'LANG_PARSER_IMAGE_IMAGE_CROPPER_ROUNDED' (this will throw an Error in a future version of PHP) in ru/public_html/system/fields/image.php on line 62
Warning: Use of undefined constant LANG_PARSER_IMAGE_IMAGE_CROPPER_RATIO — assumed 'LANG_PARSER_IMAGE_IMAGE_CROPPER_RATIO' (this will throw an Error in a future version of PHP) in .ru/public_html/system/fields/image.php on line 66
Warning: Use of undefined constant LANG_PARSER_IMAGE_IMAGE_CROPPER_RATIO_HINT — assumed 'LANG_PARSER_IMAGE_IMAGE_CROPPER_RATIO_HINT' (this will throw an Error in a future version of PHP) in ru/public_html/system/fields/image.php on line 67
Обновление прошло некрорректно. Константы объявлены в файле /system/languages/ru/language.php github.com/instantsoft/icms2/blob/1d9205baa9e944c5a614b57263f53c071ddea1ab/system/languages/ru/language.php#L209
который загружается при любом обращении к сайту
Судя по ошибке, у вас файл не обновлен.
Вопрос или предложение, не знаю,
Странная система приватности на сайте
Нельзя настроить доступ для контента только для зареганых
Категории так же либо друзья либо все, какие нафиг у админа друзья если это не касается каких то личных материалов
Настройки доступа для добавления есть, а для просмотра нет
Настройки прав групп тож самое, Просмотр чужих приватных записей есть, а запретить просмотр группе вообще нельзя
Запрет просмотра списка так а толку в ленте жмакнул и перешел
Настройки группы для не зареганых вообще нет
В альбомах всем, друзьям или по ссылке, но для каждой отдельной картинки, а почему не для альбома? а допустим зареган/нет или конкретному юзеру?
Группы, так же или все или только группа
То есть по факту если хочешь закрыть какие то разделы сайта то это не получится