WebGL [2] (Web-based Graphics Library) - це бібліотека для програмного забезпечення, яка розширює можливості мови програмування JavaScript, дозволяючи йому створювати інтерактивну 3D графіку всередині будь-якого сумісного з нею веб -браузера. Код на WebGL виконується за допомогою відеокарти.

WebGL - це контекст елемента canvas HTML, який забезпечує API 3D графіку без використання плагінів. [3] Специфікація версії 1.0 була випущено 3 березня 2011 року. [4] Некомерційна Khronos Group управляє роботою WebGL.


1. Дизайн

WebGL побудована на основі OpenGL ES 2.0 і забезпечує API для 3D графіки. [5] Вона використовує елемент HTML5 canvas, також їй доступний інтерфейс Document Object Model. Автоматичне керування пам'яттю надається мовою JavaScript. [3]

2. Реалізація

2.1. Комп'ютерні браузери

  • Mozilla Firefox - WebGL був включений у всі платформи, у яких є потрібна графічна карта з оновленими драйверами, починаючи з версії 4.0. [6]
  • Google Chrome - WebGL включений за умовчанням в усі версії починаючи з 9. [7]
  • Safari - Safari підтримує WebGL, але підтримка відключена за замовчуванням. [8]
  • Opera - WebGL реалізований в останній версії Opera 12.00
  • Internet Explorer - Microsoft не заявляла про офіційну підтримку WebGL. Плагіни Chrome Frame і IEWebGL передбачають опції, необхідні для підтримки WebGL в Internet Explorer.
  • Maemo 5 - офіційно функціонує в стандартному браузері Maemo 5 з виходом Maemo 5 PR1.2 в травні 2011 року.

2.2. Мобільні браузери

Nokia N900 - WebGL доступний в оновленому вбудованому ПЗ PR 1.2. [9] Mag200 - WebGL доступний в прошивці 0.2.12.

3. Робоча група

До складу робочої групи, що розробляє стандарт, входять: Khronos Group, розробники браузерів Apple Safari, Google Chrome, Mozilla Firefox і Opera, а також фахівці AMD і Nvidia [10].

4. Історія

WebGL виник з експериментів над Canvas 3D, які влаштовував Vladimir Vukićević з Mozilla. Vladimir Vukićević вперше продемонстрував прототип Canvas 3D в 2006 році. В кінці 2007 року і Mozilla [11], і Opera [12] створили свої власні окремі реалізації.

На початку 2009 року Mozilla і Khronos організували робочу групу WebGL. [13] 10 грудня 2009 консорціум опублікував першу чорнову специфікацію WebGL [10] [14]. Голова групи Аруна Ранганатан, заявив, що завершення роботи над специфікацією очікується в першому кварталі 2010 року [10] [14]. Остаточна ревізія першій редакції специфікацій була представлена ​​3 березня 2011 року в Сан-Франциско [1] [15] [16]. Було показано у травні 2011, що в WebGL є істотні слабкі місця в безпеці, такі як відмова в обслуговуванні і дозвіл скриптових атак. [17]


5. Електронні навчальні посібники

Для вивчення WebGL можна скористатися такими навчальними посібниками, як Mozilla Developer Network і Learning WebGL (eng) (російський переклад).

6. Безпека

У травні 2011 року служба безпеки Context Information Security опублікувала звіт, який детально розбирає кілька проблем з безпекою в поточних реалізаціях WebGL від Google Chrome і Mozilla Firefox, і взагалі в самій специфікації WebGL як такої. Згідно зі звітом, WebGL дозволяє повним по Тьюрингу програмам, що з'явилися на комп'ютері з Інтернету, дістатися до привілейованого режиму графічних драйверів і устаткування. Звіт також забезпечений посиланнями на приклади дій, що створюють проблеми з безпекою; ці дії здатні викликати відмову від обслуговування і злодійство меж-доменних зображень. Звіт завершується тим, що "браузери, в яких WebGL вбудований і включений за замовчуванням, піддають користувача ризику, створеному завдяки даним проблемам." [18]

Пізніше United States Computer Emergency Readiness Team (US-CERT) опублікувала попередження про те, що "WebGL містить безліч суттєвих проблем з безпекою. Вплив цих проблем включає в себе довільне виконання коду, відмова від обслуговування і меж-доменні атаки." US-CERT також закликав "користувачів та адміністраторів переглянути звіт Context і відключати WebGL, щоб постаратися зменшити ризик". [19]

Група Khronos, яка включає в себе Mozilla і Google Chrome, відповіла на занепокоєння, пропонуючи можливі рішення і майбутні методи розробки. [20] Після перегляду звіту Context Mozilla вирішила прибрати підтримку меж-доменних зображень в Firefox; в цей час група Khronos оновила специфікацію WebGL , щоб покращити захист від відмови від обслуговування і атак на відкриті ресурси. [21] В даний час запропоновані рішення все ще знаходяться на стадії розробки і не поширені повсюдно виробниками GPU. [22]

Context була не задоволена рішенням групи Khronos зробити крок, зафіксувавши WebGL, і вирішила, що це рішення не ефективно по відношенню до поставлених проблем. [23] У наступній статті Context постачає читачів ще більшою кількістю прикладів уразливості системи безпеки в останніх реалізаціях WebGL на різних платформах . Ознаки цих проблем стоять у ряді несправностей починаючи з руйнування системи і закінчуючи витоком інформації. Context продовжує задавати запитання, чи була WebGL специфікована, розроблена і реалізована з урахуванням служби безпеки. [21]

У червні 2011 року Microsoft заявив, що вони не можуть схвалити WebGL в його поточній формі з точки зору безпеки. Дослідження, проведене командою інженерів MSRC, призвело до висновку, що підтримка WebGL в продуктах Microsoft мала б труднощі з виконанням вимог Security Development Lifecycle - стандарти безпеки для програмного забезпечення, прийняті всередині Microsoft. Microsoft посилається на надмірно дозволу незахищеність функціональності обладнання та неперевірені можливості захисту від відмови від обслуговування, як на їх ключові проблеми. [24]

Apple показали, що вони не відкриють доступ WebGL в основні сторінки Інтернету на iOS 5. WebGL буде доступний тільки через iAds, який повинен бути затверджений для кожної реалізації Apple. [25]

Відомі незалежні експерти з безпеки і графіку (зокрема Джон Кармак [26] і Ден Камінський [27]) стверджують, що WebGL - це серйозний ризик для безпеки і буде важко це змінити.

Віце-президент з технічних стратегіям Mozilla Марк Шавер забракував критику Microsoft. У пості свого блогу він написав, що Mozilla працювала над проблемами з адресацією в специфікації WebGL і реалізації для Firefox. Він підкреслив, що веб потребував 3D можливостях, і заявив, що проблеми з безпекою властиві новим технологіям. Він рекомендував роботу Microsoft над Direct3D API, що використовується в Silverlight 5, яку він оцінив як надійну, але додав, що та ж технологія могла б бути перенесена з боку Microsoft і на реалізацію WebGL. [28]


7. Бібліотеки

Для розробки WebGL використовується кілька бібліотек. Бібліотека WebGLU була першою, яка була зроблена загальнодоступною. [29] Інші бібліотеки, об'єднані в WebGL, включають в себе GLGE, C3DL, Copperlicht, SpiderGL, gwt-g3d - G3D (обгортка WebGL) для GWT (Google Web Toolkit), SceneJS, X3DOM, Processing.js, Three.js, Turbulenz, OSGJS, XB PointStream і CubicVR.js.

ANGLE (Almost Native Graphics Layer Engine) - це поточний загальнодоступний проект, випущений під ліцензією BSD, яка дозволяє перекладати вміст WebGL в OpenGL ES 2.0, викликати API DirectX 9, які взаємодіють з платформами Microsoft Windows без необхідності в додаткових драйверах OpenGL.


Примітки

  1. 1 2 Khronos Releases Final WebGL 1.0 Specification - www.khronos.org/news/press/releases/khronos-releases-final-webgl-1.0-specification (Англ.) . Khronos (3 березня 2011). Читальний - www.webcitation.org/66s92w4D7 з першоджерела 12 квітня 2012.
  2. Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet -
  3. 1 2 WebGL - OpenGL ES 2.0 for the Web - www.khronos.org/webgl/. Khronos.org. Читальний - www.webcitation.org/66sDto9Cu з першоджерела 12 квітня 2012.
  4. Khronos Releases Final WebGL 1.0 Specification - www.webcitation.org/66s92w4D7 з першоджерела 12 квітня 2012.
  5. WebGL Specification - www.khronos.org/registry/webgl/specs/latest/. Khronos.org. Читальний - www.webcitation.org/66sDuMmiT з першоджерела 12 квітня 2012.
  6. Mozilla Firefox 4 Release Notes - www.mozilla.com/en-US/firefox/4.0/releasenotes/
  7. Google releases Chrome 9; comes with Google Instant, WebGL - FierceCIO: TechWatch - www.fiercecio.com/techwatch/story/google-releases-chrome-9-comes-google-instant-webgl/2011-02-08
  8. New in OS X Lion: Safari 5.1 brings WebGL, Do Not Track and more | FairerPlatform - fairerplatform.com/2011/05/new-in-os-x-lion-safari-5-1-brings-webgl-do-not -track-and-more /
  9. suihkulokki WebGL On N900 - suihkulokki.blogspot.com/2010/06/webgl-on-n900.html. Suihkulokki.blogspot.com (7 червня 2010). Читальний - www.webcitation.org/66s93WjXV з першоджерела 12 квітня 2012.
  10. 1 2 3 Khronos опублікувала чорновий варіант WebGL - www.lenta.ru/news/2009/12/11/webgl/ / / Lenta.ru, 11.12.2009
  11. Canvas 3D: GL power, web-style - blog.vlad1.com/2007/11/26/canvas-3d-gl-power-web-style /. Blog.vlad1.com. Читальний - www.webcitation.org/66s941XPs з першоджерела 12 квітня 2012.
  12. Taking the canvas to another dimension - my.opera.com/timjoh/blog/2007/11/13/taking-the-canvas-to-another-dimension. My.opera.com (26 листопада 2007). Читальний - www.webcitation.org/66sDetwP4 з першоджерела 12 квітня 2012.
  13. Khronos Details WebGL Initiative to Bring Hardware-Accelerated 3D Graphics to the Internet - Khronos.org (4 серпня 2009). Читальний - www.webcitation.org/66sDuttIe з першоджерела 12 квітня 2012.
  14. 1 2 WebGL 3D web standard reaches draft stages - www.techradar.com/news/internet/webgl-3d-web-standard-reaches-draft-stages-657465 / / Techradar
  15. Kurt Bakke WebCL To Enable GPU-Accelerated Web Apps - www.conceivablytech.com/5978/products/webcl-to-enablegpu-accelerated-web-apps (Англ.) . ConceivablyTech (3 березня 2011). Читальний - www.webcitation.org/66sDgdv8w з першоджерела 12 квітня 2012.
  16. Accent Khronos публікує специфікації WebGL 1.0 - прискорення 3D-графіки для web-сторінок без модулів - www.ixbt.com/news/hard/index.shtml?14/39/09. iXBT.com (3 березня 2011). Читальний - www.webcitation.org/66sDiFyup з першоджерела 12 квітня 2012.
  17. Context - www.contextis.co.uk/resources/blog/webgl/. Contextis.co.uk (9 травня 2011). Читальний - www.webcitation.org/66sDjoePn з першоджерела 12 квітня 2012.
  18. Forshaw, James WebGL - A New Dimension for Browser Exploitation - www.contextis.com/resources/blog/webgl/. Context Information Security (8 травня 2011). Читальний - www.webcitation.org/66sDkWkRn з першоджерела 12 квітня 2012.
  19. WebGL Security Risks - www.us-cert.gov/current/index.html # web_users_warned_to_turn. US-CERT (10 травня 2011). Читальний - www.webcitation.org/66sDl7nBq з першоджерела 12 квітня 2012.
  20. WebGL - Security - www.khronos.org/webgl/security/. Khronos Group (17 червня 2011). Читальний - www.webcitation.org/66sDlf8LC з першоджерела 12 квітня 2012.
  21. 1 2 WebGL - More WebGL Security Flaws - www.contextis.com/resources/blog/webgl2/. Context Information Security (16 червня 2011). Читальний - www.webcitation.org/66sDm6cIu з першоджерела 12 квітня 2012.
  22. WebGL Security - www.khronos.org / news / permalink / webgl-security. Khronos Group (9 травня 2011). Читальний - www.webcitation.org/66sDmdyVt з першоджерела 12 квітня 2012.
  23. Context WEbGL security FAQ - www.contextis.com/resources/blog/webgl/faq/. Context Information Security. Читальний - www.webcitation.org/66sDnc9KT з першоджерела 12 квітня 2012.
  24. WebGL Considered Harmful - blogs.technet.com/b/srd/archive/2011/06/16/webgl-considered-harmful.aspx. Microsoft (16 червня 2011). Читальний - www.webcitation.org/66sDo9HEc з першоджерела 12 квітня 2012.
  25. Microsoft, Apple Dis WebGL - www.informationweek.com/news/security/vulnerabilities/230800086. InformationWeek (16 червня 2011). Читальний - www.webcitation.org/66sDpWjWv з першоджерела 12 квітня 2012.
  26. Carmack, John Tweet - twitter.com / #! / ID_AA_Carmack/status/81732190949486592 (17 червня 2011). Читальний - www.webcitation.org/65cqjqKaU з першоджерела 21 лютого 2012.
  27. Kaminsky, Dan Tweet - twitter.com / #! / dakami/status/81512002912141314 (16 червня 2011). Читальний - www.webcitation.org/65cqjqKaU з першоджерела 21 лютого 2012.
  28. Mozilla rejects Microsoft criticism of WebGL - www.theinquirer.net/inquirer/news/2080571/mozilla-rejects-microsoft-criticism-webgl. The Inquirer (20 червня 2011). Читальний - www.webcitation.org/66sDqp0jq з першоджерела 12 квітня 2012.
  29. Benjamin DeLillo First WebGLU Release - bjartr.blogspot.com/2009/10/more-webgl-progress-now-with-video.html. Bjartr.blogspot.com (2 жовтня 2009). Читальний - www.webcitation.org/66sDsyoQO з першоджерела 12 квітня 2012.