1.Web瀏覽器的工作原理
1.1 Web瀏覽器由在您的計算機上執行並在Web上顯示主頁的客戶端軟體組成。有許多裝置的客戶端,包括Windows,Macintosh和Unix計算機。
1.2 與大部分網際網路一樣,全球資訊網在客戶端/伺服器模型上執行。您在計算機上執行Web客戶端 - 稱為Web瀏覽器 - 例如Microsoft的Internet Explorer或Firefox。該客戶端聯絡Web伺服器並請求資訊或資源。Web伺服器找到然後將資訊傳送到Web瀏覽器,Web瀏覽器顯示結果。
1.3 當Web瀏覽器聯絡伺服器時,它們會要求傳送使用超文字標記語言(HTML)構建的頁面。瀏覽器會解釋這些頁面並將其顯示在您的計算機上。它們還可以顯示使用Java和ActiveX等程式語言建立的應用程式,程式,動畫和類似材料,JavaScript等指令碼語言以及AJAX等技術。
1.4 有時,主頁包含Web瀏覽器無法播放或顯示的檔案的連結,例如聲音或動畫檔案。在這種情況下,您需要一個外掛或一個幫助應用程式。您可以配置Web瀏覽器或作業系統,以便在遇到瀏覽器無法執行或播放的聲音,動畫或其他型別的檔案時使用幫助應用程式或外掛。
多年來,Web瀏覽器變得越來越複雜。瀏覽器現在是功能齊全的軟體套件,可以完成從影片會議到建立和釋出HTML頁面的所有功能。瀏覽器現在也模糊了本地計算機和Internet之間的界限 - 實質上,它們可以使您的計算機和Internet作為單個計算機系統執行。
1.5 瀏覽器越來越多地不僅僅是一個軟體,而是整個套件。例如,最新版本的Internet Explorer包括安全功能,例如反網路釣魚過濾器。Firefox瀏覽器有一個名為Thunderbird的配套電子郵件軟體,也可以下載。
瀏覽網際網路時,最令人沮喪的體驗之一是瀏覽器在聯絡網站時遇到問題時顯示的錯誤訊息。根據您使用的瀏覽器以及您使用的瀏覽器版本,這些訊息可能會有所不同。有時瀏覽器會以簡單的英語顯示錯誤訊息 - 但更常見的是它們不會。本章的最後一個插圖列出了最常見的瀏覽器錯誤訊息 - 以及它們的含義。
2.基於瀏覽器而衍生的Web應用安全性
2.1 網際網路是一個危險的地方!我們非常有規律地聽說網站由於拒絕服務攻擊而變得不可用,或者在其主頁上顯示修改過的(通常是破壞性的)資訊。在其他備受矚目的案例中,數以百萬計的密碼,電子郵件地址和信用卡詳細資訊已洩露到公共領域,使網站使用者面臨個人尷尬和財務風險。
2.3 有效的網站安全性需要整個網站的設計工作:在您的Web應用程式中,Web伺服器的配置,建立和更新密碼的策略以及客戶端程式碼。雖然所有這些聽起來都很不祥,但好訊息是,如果您使用的是伺服器端Web框架,它幾乎肯定會啟用“預設情況下”強大且經過深思熟慮的防禦機制來抵禦一些更常見的攻擊。可以透過Web伺服器配置緩解其他攻擊,例如啟用HTTPS。最後,有一些公開的漏洞掃描程式工具可以幫助您查明是否有任何明顯的錯誤。
3.基於web瀏覽器的網站安全威脅
我僅列出一些最常見的網站威脅以及如何減輕這些威脅。
3.1跨站點指令碼(XSS)
XSS是一個術語,用於描述一類攻擊,允許攻擊者透過網站將客戶端指令碼注入其他使用者的瀏覽器。因為注入的程式碼從站點進入瀏覽器,所以程式碼是可信的,並且可以執行諸如將使用者的站點授權cookie傳送給攻擊者之類的操作。當攻擊者擁有cookie時,他們可以像訪問使用者一樣登入站點並執行使用者可以執行的任何操作,例如訪問其信用卡詳細資訊,檢視聯絡人詳細資訊或更改密碼。防止XSS漏洞的最佳方法是刪除或禁用任何可能包含執行程式碼的指令的標記。對於HTML這種包括元素,如<script>,<object>,<embed>,和<link>。
修改使用者資料以使其不能用於執行指令碼或以其他方式影響伺服器程式碼執行的過程稱為輸入清理。預設情況下,許多Web框架會自動清理HTML表單中的使用者輸入。
3.2 SQL注入
SQL注入漏洞使惡意使用者能夠在資料庫上執行任意SQL程式碼,無論使用者的許可權如何,都可以訪問,修改或刪除資料。成功的注入攻擊可能會欺騙身份,使用管理許可權建立新身份,訪問伺服器上的所有資料,或銷燬/修改資料以使其無法使用。要避免此類攻擊,必須確保傳遞給SQL查詢的任何使用者資料都不能更改查詢的性質。一種方法是轉義使用者輸入中具有SQL特殊含義的所有字元。
3.3跨站請求偽造(CSRF)
CSRF攻擊允許惡意使用者使用其他使用者的憑據執行操作,而無需使用者的知情或同意。這種型別的攻擊最好用例子來解釋。John是一個惡意使用者,他知道某個特定站點允許登入使用者使用POST包含帳戶名和金額的HTTP 請求向指定帳戶匯款。John構建了一個表單,其中包含他的銀行詳細資訊和一定數量的金錢作為隱藏欄位,並透過電子郵件將其傳送給其他網站使用者(使用“ 提交”按鈕偽裝成“快速致富”網站的連結)。防止此類攻擊的一種方法是伺服器要求POST請求包含使用者特定的站點生成的秘密。當傳送用於進行傳輸的Web表單時,伺服器將提供該秘密。這種方法阻止John建立自己的表單,因為他必須知道伺服器為使用者提供的秘密。即使他發現了秘密併為特定使用者建立了表單,他也不再能夠使用相同的表單來攻擊每個使用者。
3.4其他威脅科
其他常見的攻擊/漏洞包括:
點選劫持。在此次攻擊中,惡意使用者劫持了對可見頂級站點的點選,並將其路由到下方的隱藏頁面。例如,可以使用此技術顯示合法的銀行站點,但將登入憑據捕獲到<iframe>攻擊者控制的不可見狀態。Clickjacking也可用於讓使用者單擊可見站點上的按鈕,但這樣做實際上是在不知不覺中單擊一個完全不同的按鈕。作為辯護,您的網站可以透過設定相應的HTTP標頭來阻止自己嵌入到另一個網站的iframe中。
拒絕服務(DoS)。DoS通常透過使用虛假請求充斥目標站點來實現,以便合法使用者對站點的訪問中斷。請求可能很多,或者它們可能單獨消耗大量資源(例如,慢速讀取或上載大檔案)。DoS防禦通常透過識別和阻止“壞”流量,同時允許合法訊息透過。這些防禦通常位於Web伺服器之前或之中(它們不是Web應用程式本身的一部分)。
目錄遍歷(檔案和披露)。在此攻擊中,惡意使用者嘗試訪問他們無法訪問的Web伺服器檔案系統的某些部分。當用戶能夠傳遞包含檔案系統導航字元的檔名(例如,../../)時,會發生此漏洞。解決方案是在使用之前清理輸入。
檔案包含。在此攻擊中,使用者可以指定“非預期”檔案,以便在傳遞給伺服器的資料中顯示或執行。載入時,此檔案可能在Web伺服器或客戶端執行(導致XSS攻擊)。解決方案是在使用之前清理輸入。
命令注入。命令注入攻擊允許惡意使用者在主機作業系統上執行任意系統命令。解決方案是在使用者輸入可用於系統呼叫之前對其進行清理。
1.Web瀏覽器的工作原理
1.1 Web瀏覽器由在您的計算機上執行並在Web上顯示主頁的客戶端軟體組成。有許多裝置的客戶端,包括Windows,Macintosh和Unix計算機。
1.2 與大部分網際網路一樣,全球資訊網在客戶端/伺服器模型上執行。您在計算機上執行Web客戶端 - 稱為Web瀏覽器 - 例如Microsoft的Internet Explorer或Firefox。該客戶端聯絡Web伺服器並請求資訊或資源。Web伺服器找到然後將資訊傳送到Web瀏覽器,Web瀏覽器顯示結果。
1.3 當Web瀏覽器聯絡伺服器時,它們會要求傳送使用超文字標記語言(HTML)構建的頁面。瀏覽器會解釋這些頁面並將其顯示在您的計算機上。它們還可以顯示使用Java和ActiveX等程式語言建立的應用程式,程式,動畫和類似材料,JavaScript等指令碼語言以及AJAX等技術。
1.4 有時,主頁包含Web瀏覽器無法播放或顯示的檔案的連結,例如聲音或動畫檔案。在這種情況下,您需要一個外掛或一個幫助應用程式。您可以配置Web瀏覽器或作業系統,以便在遇到瀏覽器無法執行或播放的聲音,動畫或其他型別的檔案時使用幫助應用程式或外掛。
多年來,Web瀏覽器變得越來越複雜。瀏覽器現在是功能齊全的軟體套件,可以完成從影片會議到建立和釋出HTML頁面的所有功能。瀏覽器現在也模糊了本地計算機和Internet之間的界限 - 實質上,它們可以使您的計算機和Internet作為單個計算機系統執行。
1.5 瀏覽器越來越多地不僅僅是一個軟體,而是整個套件。例如,最新版本的Internet Explorer包括安全功能,例如反網路釣魚過濾器。Firefox瀏覽器有一個名為Thunderbird的配套電子郵件軟體,也可以下載。
瀏覽網際網路時,最令人沮喪的體驗之一是瀏覽器在聯絡網站時遇到問題時顯示的錯誤訊息。根據您使用的瀏覽器以及您使用的瀏覽器版本,這些訊息可能會有所不同。有時瀏覽器會以簡單的英語顯示錯誤訊息 - 但更常見的是它們不會。本章的最後一個插圖列出了最常見的瀏覽器錯誤訊息 - 以及它們的含義。
2.基於瀏覽器而衍生的Web應用安全性
2.1 網際網路是一個危險的地方!我們非常有規律地聽說網站由於拒絕服務攻擊而變得不可用,或者在其主頁上顯示修改過的(通常是破壞性的)資訊。在其他備受矚目的案例中,數以百萬計的密碼,電子郵件地址和信用卡詳細資訊已洩露到公共領域,使網站使用者面臨個人尷尬和財務風險。
2.3 有效的網站安全性需要整個網站的設計工作:在您的Web應用程式中,Web伺服器的配置,建立和更新密碼的策略以及客戶端程式碼。雖然所有這些聽起來都很不祥,但好訊息是,如果您使用的是伺服器端Web框架,它幾乎肯定會啟用“預設情況下”強大且經過深思熟慮的防禦機制來抵禦一些更常見的攻擊。可以透過Web伺服器配置緩解其他攻擊,例如啟用HTTPS。最後,有一些公開的漏洞掃描程式工具可以幫助您查明是否有任何明顯的錯誤。
3.基於web瀏覽器的網站安全威脅
我僅列出一些最常見的網站威脅以及如何減輕這些威脅。
3.1跨站點指令碼(XSS)
XSS是一個術語,用於描述一類攻擊,允許攻擊者透過網站將客戶端指令碼注入其他使用者的瀏覽器。因為注入的程式碼從站點進入瀏覽器,所以程式碼是可信的,並且可以執行諸如將使用者的站點授權cookie傳送給攻擊者之類的操作。當攻擊者擁有cookie時,他們可以像訪問使用者一樣登入站點並執行使用者可以執行的任何操作,例如訪問其信用卡詳細資訊,檢視聯絡人詳細資訊或更改密碼。防止XSS漏洞的最佳方法是刪除或禁用任何可能包含執行程式碼的指令的標記。對於HTML這種包括元素,如<script>,<object>,<embed>,和<link>。
修改使用者資料以使其不能用於執行指令碼或以其他方式影響伺服器程式碼執行的過程稱為輸入清理。預設情況下,許多Web框架會自動清理HTML表單中的使用者輸入。
3.2 SQL注入
SQL注入漏洞使惡意使用者能夠在資料庫上執行任意SQL程式碼,無論使用者的許可權如何,都可以訪問,修改或刪除資料。成功的注入攻擊可能會欺騙身份,使用管理許可權建立新身份,訪問伺服器上的所有資料,或銷燬/修改資料以使其無法使用。要避免此類攻擊,必須確保傳遞給SQL查詢的任何使用者資料都不能更改查詢的性質。一種方法是轉義使用者輸入中具有SQL特殊含義的所有字元。
3.3跨站請求偽造(CSRF)
CSRF攻擊允許惡意使用者使用其他使用者的憑據執行操作,而無需使用者的知情或同意。這種型別的攻擊最好用例子來解釋。John是一個惡意使用者,他知道某個特定站點允許登入使用者使用POST包含帳戶名和金額的HTTP 請求向指定帳戶匯款。John構建了一個表單,其中包含他的銀行詳細資訊和一定數量的金錢作為隱藏欄位,並透過電子郵件將其傳送給其他網站使用者(使用“ 提交”按鈕偽裝成“快速致富”網站的連結)。防止此類攻擊的一種方法是伺服器要求POST請求包含使用者特定的站點生成的秘密。當傳送用於進行傳輸的Web表單時,伺服器將提供該秘密。這種方法阻止John建立自己的表單,因為他必須知道伺服器為使用者提供的秘密。即使他發現了秘密併為特定使用者建立了表單,他也不再能夠使用相同的表單來攻擊每個使用者。
3.4其他威脅科
其他常見的攻擊/漏洞包括:
點選劫持。在此次攻擊中,惡意使用者劫持了對可見頂級站點的點選,並將其路由到下方的隱藏頁面。例如,可以使用此技術顯示合法的銀行站點,但將登入憑據捕獲到<iframe>攻擊者控制的不可見狀態。Clickjacking也可用於讓使用者單擊可見站點上的按鈕,但這樣做實際上是在不知不覺中單擊一個完全不同的按鈕。作為辯護,您的網站可以透過設定相應的HTTP標頭來阻止自己嵌入到另一個網站的iframe中。
拒絕服務(DoS)。DoS通常透過使用虛假請求充斥目標站點來實現,以便合法使用者對站點的訪問中斷。請求可能很多,或者它們可能單獨消耗大量資源(例如,慢速讀取或上載大檔案)。DoS防禦通常透過識別和阻止“壞”流量,同時允許合法訊息透過。這些防禦通常位於Web伺服器之前或之中(它們不是Web應用程式本身的一部分)。
目錄遍歷(檔案和披露)。在此攻擊中,惡意使用者嘗試訪問他們無法訪問的Web伺服器檔案系統的某些部分。當用戶能夠傳遞包含檔案系統導航字元的檔名(例如,../../)時,會發生此漏洞。解決方案是在使用之前清理輸入。
檔案包含。在此攻擊中,使用者可以指定“非預期”檔案,以便在傳遞給伺服器的資料中顯示或執行。載入時,此檔案可能在Web伺服器或客戶端執行(導致XSS攻擊)。解決方案是在使用之前清理輸入。
命令注入。命令注入攻擊允許惡意使用者在主機作業系統上執行任意系統命令。解決方案是在使用者輸入可用於系統呼叫之前對其進行清理。