ASP.NET MVC 應用程式的安全性,看一眼你就會了

來源:互聯網
上載者:User

標籤:style   blog   http   java   color   使用   strong   檔案   

1.使用Authorize特性登陸
對於我們開發程式而言,基本上都是要求角色成員使用Authorize特性,比如,對於管理員而言角色是Admin,對於登陸註冊登陸使用者而言是User那麼我們在使用者登陸的時候添加

1 ///角色驗證2 FormsAuthentication.SignOut();  ///清空角色3 FormsAuthentication.SetAuthCookie("User", false);

這樣就添加了一個User角色,然後,我們再控制器上添加角色驗證,如下:

1 [Authorize(Users = "User")]2 public ActionResult Index()3 {4 return view();5 }

這樣一來,Index頁面就只能是有User角色的人才能訪問,

如果使用者沒有User角色,但是強制訪問會怎麼呢?下面我們再web.config設定檔中添加一個跳轉頁面,沒有通過角色驗證的使用者會跳轉到指定的頁面,下面是跳轉到登入頁面Login

1     <authentication mode="Forms">2       <forms loginUrl="~/Login" timeout="2880" />3     </authentication>

好了,這就有搞定了,簡單吧。

 

2.防止XSS攻擊

   1.對所有的內容進行HTML編碼, 使用@Html.Encode 或者 @Html.AttributeEncode

   2.對Url進行編碼,使用@Url.Encode

   3.對javascript編碼,使用@Html.JavaScriptEncode

 

3.令牌驗證

    在form表單中添加  @Html.AntiForgeryToken(),然後在控制器中添加  [ValidateAntiforgeryToken]

 

4.使用HttpOnly阻止Cookie盜竊

   在webconfig中添加 <httpCookies domain="" httpOnlyCookies="true" requireSSL="false" />

   或者  Response.Cookies["MyCookie"].HttpOnly=true;

 

5.使用Bind特性只接收表單中有的屬性

   如:[bind(Include="UserName,PassWord")]

   這裡我是有個疑問, 為什麼這個能防禦重複提交攻擊,本人認為這應該是不能達到的。而是避免提交攻擊性的資料,比如視圖提交表單之外的其他資料。

 

以上都是項目中經常會用到的,當然,也許你有更好的辦法。

本群提供ASP.NET MVC,EF,LINQ,WEB API支援人員,不在乎人多,在乎人精。
ASP.NET MVC群 171560784  
誠邀各路高手、初學者加入。

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.