Chromium (МФА [], — хром) — веб-браузер с открытым исходным кодом, разрабатываемый сообществом The Chromium Authors, компанией Google и некоторыми другими компаниями (Opera Software, Яндекс, NVIDIA, Microsoft и другими). По утверждению разработчиков, Chromium предназначен для предоставления пользователям быстрого, безопасного и надёжного доступа в Интернет, а также удобной платформы для веб-приложений. На основе Chromium создан браузер Google Chrome (при этом в рамках Chromium также доступны ранние пре-альфа версии, в которых можно ознакомиться с новшествами, ещё не включёнными в состав Chrome), а также ряд других альтернативных веб-обозревателей.
История создания Разработка веб-обозревателя началась 25 июля 2008 года. 1 сентября 2008 года в официальном блоге Google Сандар Пичаи () и Линус Апсон () анонсировали браузер Google Chrome. На следующий день состоялся выпуск первой публичной бета-версии браузера от Google, а также была опубликована большая часть кода браузера, лицензированного преимущественно под опциональной BSD-лицензией, а также рядом других. Проект получил название Chromium. Разработчики Google объяснили создание открытого и свободного проекта Chromium стремлением помочь Mozilla и WebKit развивать Интернет и веб-технологии, предоставить разработчикам удобную платформу для создания и развития собственных проектов, а также возможностью протестировать свои собственные продукты силами сообщества. Для взаимодействия с сообществом Google создал ряд сервисов: дискуссионные группы, форум, официальный блог проекта, баг-трекер. Также разработчики Chromium гарантировали, что будут всячески стремиться соединять собственные разработки и исправления с основной веткой разработки WebKit. В марте 2011 года разработчики решили провести изменение логотипа браузера из 3D в 2D-представление.
Особенности
Скорость Поставив своей целью разработать быстрый браузер, разработчики решили использовать открытые компоненты. Движком отображения веб-страниц был выбран свободный WebKit. Он обеспечивал необходимую скорость рендеринга, имея при этом ряд других преимуществ. С движком обработки JavaScript всё обстояло несколько сложнее. Все имевшиеся на момент 2008 года движки либо не обеспечивали необходимой производительности, либо распространялись по закрытым лицензиям. Поэтому инженеры Google написали с нуля скоростной, высокопроизводительный движок V8, что позволило Chromium стать на момент запуска веб-обозревателя одним из самых быстрых браузеров в плане обработки JavaScript. В конце 2009 года в тестовых сборках Chromium начались работы по внедрению аппаратного ускорения при обработке динамического содержимого. Результат работы проявился в 7 версии Chromium, где уже можно было включить аппаратное ускорение, обеспечивая высочайшую производительность при обработке динамического 2D- (Canvas) и 3D-контента (WebGL) с помощью графического процессора, показывая высокие результаты в демонстрационных тестах от Microsoft и Google. Для ускорения доступа к страницам используется технология предварительного чтения DNS и предварительная отрисовка страниц (пререндеринг). 7 декабря 2010 года Google анонсировала новый виток развития V8, разработав новую инфраструктуру компиляции кода. Новая технология под названием Crankshaft позволила добиться огромного прироста в производительности (порядка 109 %), обойдя все конкурирующие движки.
В апреле 2013 было объявлено, что браузеры Chromium и Chrome, а также операционная система Chrome OS переходят на новый открытый движок Blink, являющийся форком WebKit. Первоначальной целью такого решения было доработать внутреннюю архитектуру движка и сократить объём его исходного кода.
Безопасность
Согласно заявленным создателями Chromium стремлениям создать самый безопасный браузер, разработчики уделяют большое внимание внедрению новых функций по защите браузера. Для обеспечения безопасности в Chromium была выбрана модель «песочницы», позволявшая ограничить простор для атаки пользовательского компьютера через использованную уязвимость. Исследователи Google пришли к выводу, что почти 70 % угроз «работают» в движке отображения, который взаимодействует с ненадёжным содержимым. Именно поэтому разработчики перевели всю работу движка в песочницуНа некоторых файловых системах, таких как FAT32, использование «песочницы» невозможно.. На большинстве операционных систем Linux этот режим в браузере включен, однако некоторые неофициальные сборки Chromium дистрибутива Slackware отключают режим «песочницы» принудительно.
Тем не менее на официально поддерживаемых Google Linux-системах, начиная с версии 23, Chromium использует возможности ядра для использования дополнительных компонентов, таких как фильтры seccomp-bpf, позволяющие значительно ограничить потенциал использования злоумышленником специфичных вызовов ядра. В сборке 66022 разработчики перенесли в «песочницу» (изменение касается систем под ОС Microsoft Windows) также исполнение подключаемого модуля Adobe Flash Player, который довольно часто становится объектом пристального внимания хакеров. У Chromium нет действенной защиты от XSS-атак, но, благодаря тому, что Chromium поддерживает HTTP-only cookies, опасность межсайтового скриптинга значительно снижается. Также активно тестируется функция XSS Auditor, внедрённая в списке экспериментальных функций в 7 версии. Данный компонент значительно увеличивает защиту от межсайтового скриптинга. Впервые XSS Auditor был использован в 4 версии Chromium, но в связи с многочисленными ошибками и падением производительности в версии 4.1 функция была отключена. Проблему с производительностью и стабильностью разработчикам удалось разрешить, но функция до сих пор является экспериментальной, так как не все сайты способны с ней работать. Также в 7 версии Chromium в качестве эксперимента появилась возможность надзора над подключаемыми модулями. Браузер получил возможность предлагать отключение тех плагинов, которые имеют незакрытые уязвимости до тех пор, пока не выйдет обновлённая версия модуля с исправлением ошибок, окончательно функция стала доступна в 10 версии браузера. Для обеспечения криптографической безопасности при работе с конфиденциальной информацией пользователей Chromium предоставляет возможность работать с защищённым протоколом передачи данных (HTTPS), которые могут упаковываться в соответствии с криптографическими протоколами SSL 3.0 и TLS 1.0. Для дополнительной защиты Chromium может использовать экспериментальный открытый протокол HSTS, позволяющий устанавливать с сайтами в форсированном режиме защищённое соединение.
Часть настроек безопасности пользователь может регулировать сам. В Chromium встроен компонент Безопасный просмотр, обеспечивающий защиту от фишинга и вредоносного ПО. Chromium при первом запуске в течение первых пяти минут загружает базы определений вредоносных и мошеннических сайтов, которые затем обновляет каждые 30 минут, при этом никакая личная информация в компанию Google не отправляется. Сам компонент может быть отключён в настройках браузераПараметры Chromium → Расширенные → Конфиденциальность → Включить защиту от фишинга и вредоносного ПО.. Дополнительно Chromium позволяет проводить гибкую настройку содержания веб-страниц: редактировать политику запуска подключаемых модулей, использования JavaScript и cookiesПараметры Chromium → Расширенные → Конфиденциальность → Настройки содержания., а также проводить очистку конфиденциальных данных за определённый периодПараметры Chromium → Расширенные → Конфиденциальность → Удалить данные о просмотренных страницах.. Среди прочих механизмов защиты можно выделить: Спецификация HTML5 в виде Origin header обеспечивает защиту от подделки межсайтовых запросов (CSRF), блокируя неправильные запросы сайтов. Chromium поддерживает X-Frame-Options API, защищающий браузер от кликджекинга, а также X-Content-Type-Options API, предоставляющий браузеру возможность защищаться от MIME-сниффинга. Chromium поддерживает «режим инкогнито», при котором история посещений и загрузок не записывается в журналы, а файлы cookies удаляются после закрытия браузера. При этом Google призывает пользователей при нахождении уязвимостей в браузере сообщать о них разработчикам, взамен получая денежные вознаграждения.
Надёжность В целях повышения стабильности для Chromium была выбрана мультипроцессная архитектура. Браузер, движок рендеринга, расширения, подключаемые модули работают в отдельных процессах. Таким образом, при нарушении работы, например, расширения браузер продолжит работу в обычном режиме, выдав предложение о перезапуске расширения. У мультипроцессной архитектуры есть ещё ряд преимуществ, кроме стабильности: Возможность мгновенного освобождения памяти при закрытии одного из компонентов. В частности, при закрытии вкладки потреблявшаяся ею память освободится сразу, в отличие от браузеров, использующих однопроцессную архитектуру, где очищение памяти при закрытии вкладки идёт несколько дольше. Активное взаимодействие с операционной системой. При использовании большого числа вкладок многие вкладки могут простаивать в бездействии, несмотря на то, что они необходимы пользователю. Chromium, взаимодействуя с ОС, уменьшает потребление памяти, заставляя систему считать неиспользуемую вкладку свёрнутым приложением. Возможность понимания, какие ресурсы и в каком количестве выделяются каждому запущенному компоненту. Для того, чтобы пользователь мог точно разобраться в каждом процессе, в Chromium установлен собственный диспетчер задач и инструмент статистики about:memory. Но при этом у подобной архитектуры есть существенный недостаток — бо́льшее общее потребление памяти.
Поддержка веб-спецификаций Chromium использует движок Blink для отображения веб-страниц, благодаря чему Chromium обеспечивает широкую поддержку HTML 4.01, xHTML 1.0 (2 изд.), XML 1.0 (4 изд.), SVG (уровень поддержки в 6 версии оценён как Advanced+Поддержка SVG браузерами ), шрифты SVG, фильтры SVG, анимацию SVG SMIL, MathML, ECMAScript, DOM, обеспечивая поддержку около 95 % существующих рекомендованных стандартовПоддержка спецификаций в WebKit Поддержка рекомендаций в Chromium . Разработчики же активно внедряют поддержку спецификаций HTML5, реализовав поддержку canvas, тегов <video>, <audio>, веб-приложений, геолокации, WebGL, Web SQL Database и ряда других активно разрабатываемых стандартов. Также Chromium полностью проходит тесты CSS3 Selectors Test и Acid3.
Поддержка форматов Браузер обеспечивает поддержку графических изображений JPEG (через Libjpeg), PNG (через Libpng), GIF, XBM. В качестве альтернативного графического формата Chromium поддерживает разработанный компанией Google формат WebP, обеспечивающий лучшее качество при меньших размерах в сравнении с JPEG. Поддержка аудио- и видеоформатов ограничена исключительно свободными форматами Ogv, Ogg и WebM, при этом AAC и MP3 не поддерживаются.
Расширяемость
В декабре 2008 года Google объявила о начале работы по внедрению поддержки расширений в Google Chrome. Тестовой площадкой стал свободный браузер Chromium. В первых версиях Chromium 2 появилась возможность использовать расширенияRelease Notes Chromium 2.0.180.0 . Расширения — небольшие программы, запущенные в браузере и добавляющие дополнительную функциональность, интеграцию с разнообразными веб-сервисами и ряд других особенностей. При написании расширений могут использоваться те же самые технологии, что и при написании веб-страниц, то есть HTML для создания разметки, CSS для стилизации и JavaScript для программирования. Учитывая, что новейшие версии Chromium обеспечивают поддержку HTML5 и CSS3, то разработчики могут пользоваться новейшими открытыми веб-технологиями, такими как canvas и CSS-анимацииOverview .