如何使Web更安全

來源:互聯網
上載者:User
web|安全 在某種程度上我們可以說,沒有Web,就沒有Internet。可是在大部分情況下,Web應用程式及 Web網站往往易遭受到各種各樣的攻擊,Web資料在網路傳輸過程中也很容易被竊取或盜用。因此如何能夠使Web及資料轉送更加安全,是一個應該引起廣泛注意地問題。

  從總體情況來看,保護Web網站免受攻擊的最重要的措施就是加強安全意識和提高安全防範措施。

  一般情況下,攻擊者攻擊Web的主要目的在於:

1、非法偷窺;
2、偽裝成Web網站的合法訪問者;
3、偽裝成Web網站管理員;
4、試圖控制Web網站主機。

一、 非法偷窺

  阻止Web攻擊者監聽行為的最有效方法就是要對Web網站和訪問者之間所建立的串連進行有效加密。幾乎所有的Web瀏覽器和伺服器都具備發送和接收加密通道上的資料的能力,這些加密資料被SSL和TLS這兩個相關的協議管理。其中SSL由Netscape產生,TLS與SSL3.0相容。圖1是微軟公司的IE5.0瀏覽器軟體中的Internet選項,它顯示了有關安全問題的協議。


圖1 IE5.0支援的各種加密協議

  Web瀏覽器在串連一般的WEB網站通常使用的是HTTP(超文字傳輸通訊協定 (HTTP)),地址欄中URL一般形式為 http://www.somewhere.com。而當Web瀏覽器串連到一個安全網站時,瀏覽器將使用HTTPS (超文本安全傳輸協議)來建立一個加密串連,地址欄中的URL通常的形式為https://www.somewhere.com


   為了建立一個安全連線,Web瀏覽器需要首先向Web伺服器請求數位憑證,數位憑證提供了身份證明。瀏覽器在向Web伺服器請求它的數位憑證時,也同時發送了它所支援的密碼編譯演算法列表。當伺服器回送數位憑證和它所選擇的密碼編譯演算法後,瀏覽器通過檢查數位簽章和確認URL是否與數字證明的公有名字域相匹配來驗證數位憑證。如過這些測試失敗,瀏覽器將顯示警告資訊。如圖2所示。


圖2 Web伺服器對HTTPS的評鑑

  瀏覽器和伺服器的通訊使用對稱式加密。這就意味著使用相同的密鑰來進行加密和解密。當伺服器的認證被證實後,瀏覽器將產生一個密鑰,這個密鑰需要通過一個安全的途徑傳遞給伺服器。一般使用雙重加密術來完成密鑰的傳遞。瀏覽器使用伺服器的公開金鑰來加密金鑰,然後把它傳遞給伺服器。伺服器使用它的私密金鑰來解密密鑰然後向瀏覽器發送確認。

  上面的過程表明的就是一個加密串連,瀏覽器和伺服器都擁有相同的密鑰,他們使用相同的密碼編譯演算法。他們後面的通訊將使用這個加密的串連。瀏覽器顯示一個黃色的鎖的表徵圖表示串連已建立。如圖3所示,網站訪問者可以點擊黃色的表徵圖來檢查伺服器的認證,從而核實伺服器的身份。

  建立一個加密串連,僅需要伺服器獲得權威機構(如VeriSign)頒發的認證。但是加密僅能阻止攻擊者看到網站發送
和接收的資料,它並不能阻止攻擊者偽造身份和對網站進行的惡意攻擊。

二、偽裝成Web網站的合法訪問者

  現在我們已經知道如何鑒別一個Web網站,但是一個網站如何鑒別它的訪問者呢?下面我們就接著討論這個問題。

  大部分Web伺服器支援兩個密碼鑒別方案:基本密碼鑒別和分類密碼鑒別。兩個方案都通過向瀏覽器發送鑒別訊號來進
行。當瀏覽器第一次收到鑒別訊號時,它顯示一個對話方塊詢問使用者的名字和密碼。在基本鑒別模式中,瀏覽器以簡單的文
本形式來傳遞使用者名稱和密碼。在分類鑒別模式中,瀏覽器傳送使用者名稱和密碼的訊息類。如果伺服器發送它的證實,瀏覽器
就把登入資訊儲存起來。

  如果你用Web伺服器上的簡單設定來實現這些評鑑方案,Web應用程式中不需要添加任何代碼。

  攻擊者的監聽問題:如果訪問者以簡單的文本形式發送他的使用者名稱和密碼,攻擊者很容易就可捕獲到這些資訊。傳送
使用者資訊使用SSL可以很容易地解決這個問題。如下面的例子所示。


User ID: < input type="text" name="user" >
Password: < input type="password" name="password">


   如果攻擊者不能監聽Web網站和訪問者之間的通訊,他將要採取更加卑劣的手段——偽裝成你的合法訪問者。造成這種
情況出現的原因一般是訪問者自己造成的,因為大部分網路使用者在密碼選取上不是很留心,他們的密碼一般都不是很安
全。他們在登入各個網站時,喜歡使用相同的使用者名稱和密碼。

  解決這個問題的方法就是訪問者在註冊帳號時要使用安全的密碼。Web網站最好具有能阻止訪問者設定英文單詞作為密
碼的功能,它可以建議使用者使用數字和字母混合而成的密碼。

三、偽裝成Web網站管理員

  當訪問者登入到你的網站時,你將會保持他們的身份一直有效,直到他們離開該網站。那麼如何?這個功能呢?因
為在瀏覽器和伺服器之間不會建立一個永久的串連,所以伺服器會在收到每個頁面請求後只建立一個單獨的串連。

  使用者登入成功後伺服器是如何證實該使用者的身份呢?

  答案是瀏覽器儲存了使用者的姓名和密碼。當瀏覽器和伺服器再次串連時,瀏覽器將傳遞已經儲存過的使用者名稱和密碼。
伺服器利用使用者資料庫來證實這些資訊,並會在此基礎上作出允許和拒絕訪問的決定。

  前面我們提到過,瀏覽器通過比較帶有伺服器的數位憑證的公有名字的URL來證實伺服器的身份。這是一個很好的Web
安全防範措施。但是它不能避免所有的偽裝伺服器的攻擊。

  網域名稱服務 (DNS)系統(DNS)可把易讀的網址(例如www.yourunit.com)解析為IP地址,在你的安全連結中它是一個易遭受攻
擊的連結。如果攻擊者訪問了一個DNS伺服器,並且修改了指向他的機器的記錄,那麼這個機器就可以把所有來自
www.yourunit.com網站的請求全部重新導向到www.attacker.com.。在重新導向中,訪問者的瀏覽器將顯示預設的地址尾碼。如
果字串很長,使www.attacker.com不在視野之內,大部分訪問者都不會注意到。

  如果攻擊者得到VeriSign為www.attacker.com頒發的數位憑證,那麼訪問者的瀏覽器將和www.attacker.com建立合法
的串連。如果訪問者不檢查數位憑證,他不會知道自己在一個駭客網站上。如果攻擊者把他的網站偽裝成為和
www.attacker.com的登入介面一樣的話,他就能捕獲到該客戶的銀行信用卡帳號。

四、試圖控制Web網站主機

  一些攻擊利用web伺服器上啟動並執行軟體的漏洞來讓伺服器執行攻擊者的代碼。一類臭名昭著的攻擊方法就是向緩衝寫入大量的資料從而使緩衝器崩潰。下面所摘錄的一段C++代碼就很容易受到這樣的攻擊,因為它沒有邊界檢查。

void ByYourCommand( char* pszData )
{ char szBuffer[ 255];
strcpy( szBuffer, pszData ); ...}

  如果執行strcpy()過程使堆疊溢位,將會產生什麼結果呢?圖4向你展示了系統堆疊溢位後的情況。如果攻擊者在緩衝中寫入了太多的資料,它將覆蓋函數調用記錄。這是一個資料結構,它包含了儲存函數入口代碼的寄存器,還有函數的返回地址。如果攻擊者的代碼覆蓋了函數的返回地址,攻擊者就可以在你的電腦上執行任何代碼。


圖4 通過使緩衝溢出,攻擊者把攻擊代碼載入到記憶體,
代替函數的返回地址,從而執行攻擊代碼

  攻擊者是如何把他的攻擊代碼移植到你的電腦上的呢?他使用的方法就是把代碼寫進資料緩衝,傳遞這個例子函數的字串很容易感染上“特洛伊木馬”這樣的駭客程式。有許多文章已經介紹過這類的攻擊方式。

  駭客知道易攻擊的函數(例如上面所舉的函數例子)通常易被回應使用者輸入的代碼所調用。攻擊者發送一個不可能的長字串給伺服器。如果緩衝溢出,處理他的請求的線程將崩潰。攻擊者得到HTTP逾時的訊息提示就表明請求線程已被破壞。

  如何阻止你Web網站的應用程式被利用呢?首先,給系統軟體添加最新的安全補丁。然後,檢查使用允許直接存取記憶體的語言(例如:C、C++和Delphi)編寫的程式碼,看是否有安全性漏洞。

  檢查代碼可以給你無盡的信心,因為你可以發現一個應用程式並不是很容易就受到緩衝溢出這樣的攻擊的。如果你要完全避免這樣的問題,只能不使用直接存取記憶體的語言來編寫代碼。你可以使用一些指令碼語言(例如:JavaScript、Perl)或使用解釋性的語言(例如Java)。如果使用安全的語言來編寫代碼,Web網站的操作員就可以被解放出來,不用天天擔心緩衝溢出這樣的安全攻擊。

  另外,你也不要盲目地相信各種安全技術,廠商雖然為了推銷自己的產品而做出了很好的安全品質承諾,但是你要知道沒有任何技術能夠保證你的Web不遭受攻擊。所以你需要一定的時間和精力去研究和發現Web的缺點,然後找出解決問題的方法。

  Web的安全性問題非常複雜,範圍很廣,在本文中,我們只是從外部的攻擊角度出發,討論了如何避免Web應用程式和Web資料遭到破壞和竊取,來防止非法使用者對Web應用程式的越權訪問,提高Web網站的安全性。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。