Chromium

веббраузер від Google

Chromium
Chromium Logo
Chromium Logo
Chromium 111 з відкритою головною сторінкою Вікіпедії
Тип Вебоглядач
Автор Google
Стабільний випуск 122.0.6261.129 (14.03.2024, для Windows)[1]
Операційна система Dragonfly BSD
NetBSD
OpenBSD
FreeBSD
Linux
macOS
Windows (XP SP2 and later)
Мова програмування C++ та Асемблер
Рушій(ї) WebKit, Blink (браузерний рушій), V8 (рушій JavaScript)
Розмір 20.0 MB (FreeBSD i386)
24.0 MB (Linux)
26.3 MB (Linux x64)
23.7 MB (Mac)
15.7 MB (Windows)
Ліцензія Ліцензія BSD, Ліцензія MIT, LGPL, Shared Source, MPL/GPL/LGPL tri-license
Репозиторій chromium.googlesource.com/chromium/src
Вебсайт chromium.org dev.chromium.org

Chromium — це самостійний вебоглядач з відкритим вихідним кодом, поширюваним на основі ліцензій BSD. На основі цього відкритого коду компанія Google створила свій браузер Chrome під власною ліцензією EULA. Chromium включає рушій для відображення HTML-сторінок WebKit (до версії 28). Одна з найважливіших можливостей — це розширення на зразок розширень браузера Firefox.

Історія створення

Розробка веббраузера почалася 25 липня 2008. 1 вересня 2008 на офіційному блозі Google Сандарам Пічаї (Sundar Pichai) і Лінус Апсон (Linus Upson) анонсували браузер Google Chrome. Наступного дня відбувся випуск першої публічної бета-версії браузера від Google, а також була опублікована велика частина коду браузера, ліцензованого переважно під опціональною BSD-ліцензією, а також низкою інших. Проєкт отримав назву Chromium, натякаючи на те, що Google Chrome виготовлений з хрому.Розробники Google пояснили створення відкритого і вільного проєкту Chromium прагненням допомогти Mozilla і WebKit розвивати Інтернет і вебтехнології, надати розробникам зручну платформу для створення і розвитку власних проєктів, а також можливістю протестувати свої власні продукти силами спільноти. Для взаємодії зі співтовариством Google створив ряд сервісів: дискусійні групи, довідкові форуми, офіційний блог проєкту, баг-трекер. Також розробники Chromium гарантували, що будуть всіляко прагнути з'єднувати власні розробки та виправлення до основної гілки розробки WebKit.

Особливості

Швидкість

Поставивши своєю метою розробити швидкий браузер, розробники вирішили використовувати відкриті компоненти. Рушієм відображення вебсторінок був обраний вільний WebKit. Він забезпечував необхідну швидкість рендеринга, маючи при цьому ряд інших переваг[2][3]. З рушієм обробки JavaScript все було трохи складніше. Усі наявні на момент 2008 року рушії не забезпечували необхідної продуктивності або розповсюджувалися за закритими ліцензіями. Тому інженери Google написали з нуля швидкісний, високопродуктивний[4][5][6][7] рушій V8, що дозволило Chromium стати на момент запуску веббраузера одним з найшвидших браузерів в плані обробки JavaScript. Наприкінці 2009 року в тестових збірках Chromium почалися роботи по впровадженню апаратного прискорення при обробці динамічного вмісту. Результат роботи виявився в 7 версії Chromium, де вже можна було включити апаратне прискорення[8][9][10], забезпечуючи найвищу продуктивність при обробці динамічного 2D (Canvas) та 3D-контента (WebGL) за допомогою графічного процесора, показуючи високі результати в демонстраційних тестах від Microsoft та Google[11][12][13][14][15][16]. Для прискорення доступу до сторінок використовується технологія попереднього читання DNS[17] та попереднє промальовування сторінок (пререндерінг)[18][19]. 7 грудня 2010 року Google анонсувала новий виток розвитку V8, розробивши нову інфраструктуру компіляції коду. Нова технологія під назвою Crankshaft дозволила добитися величезного приросту в продуктивності (порядку 109 %), обійшовши всі конкуруючі рушії[20][21].

Безпека

Згідно заявленим творцями Chromium прагненням створити найбезпечніший браузер, розробники приділяють велику увагу впровадженню нових функцій по захисту браузера. Для забезпечення безпеки в Chromium була обрана модель «пісочниці», що дозволяла обмежити простір для атаки користувальницького комп'ютера через використану уразливість[22]. Дослідники Google прийшли до висновку, що майже 70 % загроз «працюють» в рушії відображення, який взаємодіє з ненадійним вмістом. Саме тому розробники перевели всю роботу рушія в пісочницю[~ 1][23][24]. На більшості операційних систем Linux цей режим в браузері включений, однак деякі неофіційні збірки Chromium дистрибутиву Slackware відключають режим «пісочниці» примусово. Тим не менш, на офіційно підтримуваних Google Linux-системах, починаючи з версії 23, Chromium використовує можливості ядра для використання додаткових компонентів, таких, як фільтри seccomp-bpf, що дозволяють значно обмежити потенціал використання зловмисником специфічних викликів ядра[25].У збірці 66022 розробники перенесли в «пісочницю» (зміна стосується систем під ОС Microsoft Windows) також виконання модуля, що підключається Adobe Flash Player[26][27], який достатньо часто стає об'єктом пильної уваги хакерів[28].У Chromium немає дієвого захисту від XSS-атак, але, завдяки тому, що Chromium підтримує HTTP-Only cookies, небезпека міжсайтового скриптинга значно знижується[29]. Також активно тестується функція XSS Auditor, впроваджена в списку експериментальних функцій в 7 версії. Цей компонент значно збільшує захист від міжсайтового скриптинга. Вперше XSS Auditor був використаний в 4 версії Chromium[30], але у зв'язку з численними помилками та падінням продуктивності у версії 4.1 функція була відключена[31]. Проблему з продуктивністю та стабільністю розробникам вдалося вирішити, але функція досі є експериментальною, оскільки не всі сайти здатні з нею працювати[32]. Також в 7 версії Chromium як експеримент з'явилася можливість нагляду за модулями. Браузер отримав можливість пропонувати відключення тих плагінів, які мають незакриті вразливості до тих пір, поки не вийде оновлена версія модуля з виправленням помилок[32][33][34], остаточно функція стала доступна в 10 версії браузера[35].Для забезпечення криптографічної безпеки при роботі з конфіденційною інформацією користувачів Chromium надає можливість працювати із захищеним протоколом передачі даних (HTTPS), які можуть упаковуватися згідно з криптографічними протоколами SSL 3.0 та TLS 1.0. Для додаткового захисту Chromium може використовувати експериментальний відкритий протокол HSTS, що дозволяє встановлювати з сайтами у форсованому режимі захищене з'єднання[36][37].Частину налаштувань безпеки користувач може регулювати сам. У Chromium вбудований компонент Безпечний перегляд, що забезпечує захист від фішингу та шкідливого ПЗ[38][39][40]. Chromium при першому запуску протягом перших п'яти хвилин завантажує бази визначень шкідливих та шахрайських сайтів, які потім оновлює кожні 30 хвилин, при цьому ніяка особиста інформація в компанію Google не відправляється. Сам компонент може бути відключений в налаштуваннях браузера.[~ 2][41]. Додатково Chromium дозволяє проводити гнучку настройку змісту вебсторінок: редагувати політику запуску модулів, що підключаються, використання JavaScript та cookies[~ 3], а також проводити очищення конфіденційних даних за певний період[~ 4][42]. Серед інших механізмів захисту можна виділити:

  • Специфікація HTML5 у вигляді Origin Header забезпечує захист від підробки міжсайтових запитів (CSRF)[37], блокуючи неправильні запити сайтів.
  • Chromium підтримує X-Frame-Options API[43], що захищає браузер від клікджекінга, а також X-Content-Type-Options API[44], що надає браузеру можливість захищатися від MIME-сніффінга[~ 5].
  • Chromium підтримує «режим інкогніто», при якому історія відвідувань та завантажень не записується в журнали, а файли cookies видаляються після закриття браузера[45].

При цьому Google закликає користувачів при знаходженні вразливостей в браузері повідомляти про них розробникам, натомість отримуючи грошові винагороди[46].

Надійність

Для підвищення стабільності для Chromium була обрана мультипроцесна архітектура. Браузер, рушій рендерингу, розширення, компоненти Plug-in працюють в окремих процесах. Таким чином, при порушенні роботи, наприклад, розширення браузер продовжить роботу в звичайному режимі, видавши пропозицію про перезапуск розширення.

У мультипроцессорної архітектури є ще низка переваг, крім стабільності:

  • Можливість миттєвого звільнення пам'яті при закритті одного з компонентів. Зокрема, при закритті вкладки споживана нею пам'ять звільниться відразу, на відміну від браузерів, що використовують однопроцесну архітектуру, де очищення пам'яті при закритті вкладки йде трохи довше.
  • Активна взаємодія з операційною системою. При використанні великої кількості вкладок багато вкладок можуть простоювати в бездіяльності, попри те, що вони необхідні користувачу. Chromium, взаємодіючи з ОС, зменшує споживання пам'яті, примушуючи систему вважати невживану вкладку згорнутим додатком.
  • Можливість розуміння, які ресурси і в якій кількості виділяються кожному запущеному компоненту. Для того, щоб користувач міг точно розібратися в кожному процесі, в Chromium встановлений власний диспетчер завдань та інструмент статистики about: memory.

Але при цьому подібна архітектура має істотний недолік — більше загальне споживання пам'яті.

Вебоглядачі, засновані на Chromium

Примітки