安全性

      咱們常常會看到一些具備典型特徵的安全性攻擊方面的新聞報道,這些報道聲稱黑客已可以竊取我的信息,或是敏感數據已遭到之外曝光。可悲的實際狀況是,許多此類事件實際上是很容易避免的。做爲開發人員,咱們須要的是以安全性意識去設計應用程序,以阻止這類問題。web

1、認證與受權瀏覽器

      最基本的安全關注之一是,確保只有正確的用戶才容許對系統進行訪問。這就是認證(Authentication)與受權(Authorization)所起的做用。安全

      認證確保用戶已提供了適當的訪問系統所需的憑據。一旦用戶登陸(典型的是經過提供用戶名和口令,或是某種其餘令牌,如SSH密鑰,或加密令牌),那麼他們即是已認證的了。網站

      受權發生在認證以後,且包括對給定用戶是否有權對系統作某事(如查看一個頁面或編輯一條記錄)的決策。當用戶訪問一個其餘人不可用的資源時,必須獲得明確的受權。編碼

1.以AuthorizeAttribute限制訪問加密

      ASP.NET MVC隨帶了一個叫作AuthorizeAttribute的過濾器註解屬性,它爲實現受權規則提供一種現成可用的簡單方式。與認證方案協同使用,此註解屬性可用來確保只有某些用戶才能訪問特定的控制器動做。spa

      默認狀況下,用「Internet Application」項目模板建立的ASP.NET MVC新項目,會使用表單認證方案來啓用認證,這種認證方案是在web.config文件的system.web/authentication部分中定義的:設計

      因爲啓用了表單認證,當用戶試圖訪問需受權的資源時,他們會被重定向到loginUrl,以便輸入用戶名和口令。orm

      做爲表單認證的一種替代辦法,ASP.NET也支持Windows認證。Windows認證會嘗試使用用戶的Windows登陸憑據對用戶進行認證,於是它最適合於企業內部網應用程序(Intranet Application)。這時可將web.config中的<authentication mode="Forms">改爲<authentication mode="Windows">來啓用它。blog

      因爲啓用了認證,咱們能夠對控制器動做(或是對整個控制器)運用AuthorizeAttribute,以限制對它們的訪問。若是用戶未被容許對動做進行訪問,AuthorizeAttribute將對瀏覽器傳遞一個「401Unauthorized(未受權)」的HTTP狀態碼,以指示拒絕該請求。使用表單認證的應用程序而後會將瀏覽器重定向到登陸頁面,只有用戶已被認證才能夠繼續執行。

      AuthorizeAttribute最簡單的使用只要求當前用戶已被認證:

 

      爲了對一個動做作進一步限制,咱們能夠指定AuthorizeAttribute所要求的用戶或角色。

      此例只容許名爲「admin」的用戶訪問這一動做。

      這種硬編碼用戶名的作法可能過於侷限,更有意義的作法是指定角色。

    此例對Developers動做的訪問將只容許admins或developers角色中的用戶。

2、跨網站腳本攻擊(XSS)

      跨網站腳本攻擊(Cross-Site Scripting, CSS,XSS)是一項惡意用戶操縱系統的技術,它使脆弱網站上呈現特殊的JavaScript(一種訪問瀏覽器隨後會執行的腳本)。

       按慣例,惡意腳本會向含有敏感數據的第三方網站發送一個請求。這即是跨網站部分。一個用戶將一個腳本放在一個向另外一個密謀網站發送祕密數據的網站。黑客的技巧是讓該腳本在脆弱網站上運行。

1.動做中的XSS

       已知案例,能夠執行一個本地的XSS模擬攻擊。案例包含兩個簡單的ASP.NET MVC應用程序,其中一個是脆弱網站,它有一個簡單的評論遞交頁面功能;另外一個網站時攻擊站,它簡單地收集這些遞交,因而咱們即可以看到這種攻擊可否運行。

相關文章
相關標籤/搜索