1. 程式人生 > >什麼是IE中的保護模式(protected mode)

什麼是IE中的保護模式(protected mode)

保護模式是從Windows Vista中引進的一個新的安全控制機制。它將作業系統中執行的程序(process)和物件(比如登錄檔,資料夾)進一步劃分了安全等級。有3個級別(High, Medium, Low),如果一個Low安全級別的程序(比如一個IE程序)要往具有Medium級別的物件上寫東西,就會被Access Denied掉。即使執行程序的賬戶具有往物件上寫東西的許可權,在保護模式下一樣會被Access Denied掉,因為作業系統會先做保護模式下的安全審查,再做檔案屬性上的安全審查。

另外,由一個具有Low級別的程序產生的子程序也具有Low級別。

保護模式是對zone的補充,所以zone

裡面並不包含保護模式的功能,我們不能通過zone來取代保護模式的功能。

拿我們現在的例子來說,當用戶點選列印報表的時候,IE程序會先載入print control, 這個control會再呼叫spool service.exe,通過spool service的幫忙來開啟印表機視窗。IE如果開啟了保護模式,就會執行在Low級別。IE程序呼叫的spool service.exe也就執行在了低級別,一個Low級別的程序是無法獲得MediumHigh級別物件的write權利的,於是我們就看到了錯誤。下面的內容是我從你們出錯的日誌裡拿出來的:

2011-02-25 13:15:28     13:15:28.0591302         spoolsv.exe       1596     RegOpenKey            HKU/S-1-5-21-1575878230-2625628130-970249512-61800

         ACCESS DENIED            Desired Access: Read/Write      NT AUTHORITY/SYSTEM            00000000:000003e7

Spoolsv.exe雖然是執行在本機的System賬戶下,而且這個賬戶的確具有對HKU/s-1……這個登錄檔的寫許可權,但由於保護模式打開了,它會被保護模式先檢查,於是它被降級了,只有Read許可權了,所以就報錯了。請注意,一個程序希望獲得某個物件上的Write許可權並不意味著這個程序一定會去Write些什麼,就像每個人有建立google郵箱的權利但並不是每個人都會去建立。

如果勾上保護模式,肯定比不勾更安全,但同時也要做出犧牲,那就是善意的程序也會被封殺掉。因為有些程序它就是需要獲得某些物件上的

Write許可權(它並不一定去寫,也並一定會寫些惡意的東西),如果這些程序的要求得不到滿足,那就會報錯。如果一個站點已經在trusted sitesLocal intranet sites裡,也就意味著我們預設為這些站點都是安全的,所以也沒有必要再一次限制這些站點。好比我們信任送水工到我們房間裡換水,但我們又限制他用剪刀的權利(送水工用剪刀是為了拆開蓋子,而不是行凶),這樣他就不能拆開蓋子,換水的動作就是失敗了。