最近微軟引用了兩份分析WebGL中安全弱點的報告,以此作為不支持WebGL的主要原因,盡管Google、Mozilla、Opera和Apple都支持這種3D圖形標(biāo)準(zhǔn)。
HTML5的Canvas元素讓開發(fā)者可以使用不同的渲染引擎來編寫圖形程序,WebGL就是其中的一種,它基于Khronos小組管理的OpenGL驅(qū)動、針對硬件加速3D渲染的規(guī)范創(chuàng)建,當(dāng)前Google Chrome、Mozilla Firefox、Opera以及Safari的每日構(gòu)建版本中都已經(jīng)實現(xiàn)了該規(guī)范。 WebGL 1.0是在2011年2月份發(fā)布的,但Chrome早在一年前就已經(jīng)支持它了。
唯一一家沒有使用WebGL的主要瀏覽器廠商就是微軟。盡管我們可以使用Google的ANGLE,它會把對WebGL的API調(diào)用轉(zhuǎn)換為等價的DirectX調(diào)用,但那并非是一種本地解決方案,如果Windows能夠?qū)ebGL提供本地支持,那會更加合適,但是Windos并未提供這種支持,而且,微軟聲稱,他們不會采用WebGL,因為它存在安全漏洞。
微軟對WebGL的安全缺陷的抱怨基于Context Information Security編寫的兩份報告: 《WebGL瀏覽器開發(fā)的新維度(WebGL – A New Dimension for Browser Exploitation)》和《WebGL更多WebGL安全缺陷(WebGL – More WebGL Security Flaws)》。這兩份報告說明了在WebGL中發(fā)現(xiàn)的一些安全問題,像易于受到DoS攻擊、跨域的圖像竊取,以及Firefox實現(xiàn)中的一個bug,那讓攻擊者可以竊取用戶的數(shù)據(jù)。
Khronos已經(jīng)對Context的第一份報告作出響應(yīng),建議用戶使用GL_ARB_robustness擴展來解決問題,“已經(jīng)有一些GPU廠商部署了該擴展,而Khronos期望其他廠商也能夠盡快部署,”以此作為針對DoS攻擊的解決方案。關(guān)于跨域圖像竊取,他們說到:
如果WebGL能夠擁有合并跨域圖像的能力,那么就會給開發(fā)者提供很大的方便,但是WebGL工作組正在考慮采用跨原始資源共享(Cross Origin Resource Sharing,CORS)或者其它機制,從而避免將來因此而受到譴責(zé)。
Context 不認(rèn)為Khronos的GL_ARB_robustness解決方案很合適,因為在發(fā)現(xiàn)DoS攻擊的時候,它可能會重置GPU。Context同意Khronos關(guān)于圖像竊取的解決方案,建議“如果需要管理跨域圖片的機制,就需要在WebGL中使用CORS”。 他們還提到,需要和Mozilla協(xié)作,修復(fù)在Firefox中發(fā)現(xiàn)的弱點,Mozilla會樂于接受這種協(xié)作,并且他們還與Google也取得了聯(lián)系。最終結(jié)論是,Context建議用戶禁用WebGL,硬件廠商也不要繼續(xù)為其提供支持。
在Context的報告之后,微軟也列舉了他們 對WebGL的主要關(guān)注點,決定“在當(dāng)前表單”中不支持WebGL,這種表述也為將來一旦想要改變主意的時候留了后路:
“讓瀏覽器支持WebGL會直接把硬件功能暴露給web,我們認(rèn)為不應(yīng)該允許這種方式。”
“讓瀏覽器支持WebGL,安全服務(wù)責(zé)任就會過于依賴第三方來保證web體驗中的安全性。”
“系統(tǒng)在遭到DoS攻擊時也會出現(xiàn)很多問題。”
我們還要提到一些相關(guān)的內(nèi)容,微軟對于DirecX投資過于巨大,在1995年就已經(jīng)發(fā)布了第一個版本,所以他們很可能會繼續(xù)支持這種技術(shù)。
然而,蘋果最近宣布iOS 5會使用WebGL來進行3D渲染,但是據(jù)Chris Marrin所說,那只會限定在iAd開發(fā)者。他們可能會擴展對WebGL的支持,使得它成為iOS中的公共API,從而有步驟地使用曾經(jīng)有效的方法來引入新技術(shù)。