當前位置:首頁>>軟件教程>>操作系統(tǒng)>>新聞內容
WinXP SP2禁用Xbm的原因及解決辦法
作者:天緣 發(fā)布時間:2004-8-13 13:04:18 文章來源:天極網

  大家所熱切期盼的XP的SP2補丁正式版本已經放出,根據官方消息,中文版本的SP2也即將在隨后的8月21日左右放出。

  在SP2補丁包里,除了對bug的修復和功能的加強外,也對安全控制做了相應修改,指定了更嚴格的默認安全策略,以保證用戶安全。

  在更改后的安全策略中,因為基于安全因素的考慮,默認去掉了對 image/x-xbitmap 圖片格式的支持(該圖片的后綴名為Xbm)的支持。去掉支持一種危險的圖片格式本身是無可厚非的,那么,為什么我要專門提到這個圖片格式,它有什么特別之處,一般運用在什么場合呢? 說x-xbitmap格式的圖片(以下簡稱為Xbm格式)的圖片特殊,就在于它并不跟gif,jpg等圖片格式一樣,是一個真正的純2進制圖片格式,而是ascii碼文件--換句話說,它是一個純文本文件,在Windows系統(tǒng)下,系統(tǒng)瀏覽器將它翻譯成圖片來進行顯示。

  解析Xbm圖形格式

  Ok,讓我們先來看看這種特殊圖片的格式的例子:

  新建一個文本文件,將以下內容復制過去

  #define counter_width 48
  #define counter_height 9
  static unsigned charcounter_bits[]={ff,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}

  然后,將此文本文件保存為名字為 test.Xbm的文件。

  接下來,讓我們看看如果在ie中打開它,會出現什么情形??(新開一個ie,然后將test.Xbm直接拖拽到它上面),哈,出現了如下圖一樣的情景,在瀏覽器中出來的,已經不是我們的文本,而是一個黑白的圖片了!

  讓我們看看上面那代碼中,每一行的意義:

   #define counter_width 48 這里定義了圖片的寬度,一般都設置為8的整數倍,因為我們想顯示的是6個數字,所以就設置成了8*6=48的寬度

  #define counter_height 9 這里設置了圖片的高度,可以任意設置,但是注意,這里的數字直接決定了下面的數組中,是用幾組數來表示一個顯示出的數字

  static unsigned char counter_bits[]={7c,3c,7c,3c,70,3c,fe,7c,fe,7c,78,7c,ee,ee,ee,ee,7c,ee,e0,ee,60,ee,74,ee,70,fe,30,
fe,70,fe,38,ec,e0,ec,70,ec,1c,e0,ee,e0,70,e0,fe,7e,fe,7e,70,7e,fe,3c,7c,3c,70,3c}

  在這里,是圖片用來顯示內容的十六進制的代碼,在這里,是9*6=54個數字來表示,值得一提的是,由于在圖片顯示中,是顯示完了一行后,再顯示第2行,直到最后一行,因此更為準確的描述是6*9顯示,每6個數表示一行(因為我們顯示了6個數字),一共9行(我們的定義中,是采用的高度為9的數組)

  正如static unsigned char英文意思為靜態(tài)的,無符號的,燒焦的。它只能用來顯示黑白兩種顏色。二進制中的1將來用顯示為黑色,0為白色。

  因此,上面的7c、3c這樣的數字,就是一個256位的2進制,其中的1表示黑色,0表示白色,由此繪制出每個數字的圖形。

  由于Xbm文件的性質決定,它只能顯示黑/白兩種顏色,而且以數組的方式來表現每個要顯示的圖形,注定了不能用它生成太復雜的圖案。那么,這樣的圖片格式到底有什么用呢??當然有的,不少asp論壇/聊天室的登陸驗證碼,就是用這樣的方法在asp中動態(tài)生成的。

  SP2為什么會禁用Xbm圖形格式

  那么,象這樣一個被廣泛采用的生成驗證代碼的技術,為什么微軟在XP的SP2升級包中又要禁止掉它呢??這就需要從Xbm的漏洞談起了。

  Microsoft Internet EXPlorer和Outlook EXPress在處理WEB頁,HTML郵件,EMAIL附件中畸形Xbm圖象文件會導致崩潰,問題存在于對Xbm文件中的內容缺少檢查,MSIE按照圖象規(guī)定的長度和寬度分配內存,攻擊者可以提高超大的長度和寬度數值導致系統(tǒng)消耗內存或者訪問沖突。

  換句話說,如果構造一個長寬的尺寸特別大的Xbm文件,很容易導致Windows的內存耗盡,導致程序無響應或者死機。本身來說,這不算一個特別嚴重的漏洞,因為根據安全公告,無法造成溢出,不會存在太大的權限漏洞。但是由于XP的SP2強調安全性,因此將Xbm功能禁用了。從這點上可以看出,SP2對于安全的確比較重視,將有漏洞的功能基本上都補上或禁用了,作為網絡管理員,我對微軟的做法表示支持,因為操作系統(tǒng)默認設置的不安全,常常是造成非專業(yè)用戶被攻擊的首要因素。

  解禁方法:

  由此看出,以后我們訪問某些采用生成Xbm作為驗證代碼的站點的時候,就相當不方便了,如果有必要,可以通過簡單的操作注冊表恢復我們需要的功能。

  打開注冊表,然后進到鍵值[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet EXPlorer\Security]
將blockXbm的值改為00000000(dword,雙字節(jié)),沒有的話新建立一個就可以了。

  之后重新啟動機器,則Xbm格式的圖片就可以看到了。

  從SP2禁止Xbm的趨勢看出,微軟打算似乎已經開始打算放棄對Xbm格式的支持了。那么,作為程序編寫者,有必要未雨綢繆,尋找其他生成驗證碼的途徑。在php中,可以通過調用gd庫等方式生成jpg/gif等圖形格式的注冊驗證碼,那么在asp中有其他的辦法么?

  事實上圖片驗證密碼的關鍵是--不能在客戶端留下圖片的真實url,或可對應反推源地址的信息,因此asp可以采用以下2種方式實現支持SP2的圖形驗證碼。

  如果是購買的虛擬主機,那么可以采用將jpg/gif圖片放到數據庫,然后用session傳值的方式,最后利用asp直接從數據庫中輸出圖片,這方法的好處是不需要特別設置服務器端,壞處則是每次生成驗證圖片時都會需要與數據庫連接,增加了開銷。

  如果是有管理員控制權限的用戶,可以考慮采用第三方組件來實現。天緣個人推薦 ASP圖象組件shotgraph ,它的免費版本對生成的圖形有一定限制,不過已經足夠用來制作驗證碼了。

 


最新更新
·教你刪除Windows 7自動創(chuàng)建的
·檢測你的計算機是否能運行Wi
·如何安裝Windows 7 RC的中文
·解決Vista關閉UAC后邊欄無法
·Windows 7 RC新功能XP Mode詳
·Windows7操作系統(tǒng)硬件配置要
·wubi安裝Ubuntu 9.04失敗的原
·如何修改Windows7的軟件默認
·在Windows7在硬盤升級Window
·vista在硬盤下全新安裝Windo
相關信息
·WinXP在硬盤下全新安裝Windows7的方法
·如何能讓WinXP Home版安裝IIS?
·卸載vista系統(tǒng)NIFS分區(qū)文件的方法
·使用U盤安裝Windows XP系統(tǒng)的經驗
·本地磁盤無法修改磁盤卷標的解決方法
·Windows XP下硬盤安裝Windows7系統(tǒng)抓圖版
·解決WinXP SP3自定義桌面里沒有IE選項的辦法
·遠程桌面超出了最大連接數的解決方法
·Windows 7和Windows XP的32位和64位有什么區(qū)別?
·光盤總是顯示上一張光盤內容的兩種解決方法
放生
愚愛
夠愛
觸電
白狐
心跳
知足
犯錯
降臨
分愛
葬愛
光榮
畫心
火花
稻香
愛得起
這種愛
大丈夫
花蝴蝶
二缺一
小酒窩
下雨天
右手邊
安靜了
棉花糖
明天過后
邊做邊愛
擦肩而過
沒有如果
懷念過去
等一分鐘
越來越愛
寂寞暴走
你的承諾
Nobody
我們都一樣
永遠在身邊
天使的翅膀
原諒我一次
i miss you
原諒我一次
吻的太逼真
姑娘我愛你
做你的愛人
一定要愛你
飛向別人的床
愛上別人的人
感動天感動地
心在跳情在燒
不潮不用花錢
如何能把你忘記
即使知道要見面
愛上你是一個錯
最后一次的溫柔
愛上你是我的錯
怎么會狠心傷害我
親愛的那不是愛情
傷心時候可以聽情歌
愛上你等于愛上了錯
不是因為寂寞才想你