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

1.使用Authorize特性登錄
對於咱們開發程序而言,基本上都是要求角色成員使用Authorize特性,好比,對於管理員而言角色是Admin,對於登錄註冊登錄用戶而言是User那麼咱們在用戶登錄的時候添加javascript

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

這樣就添加了一個User角色,而後,咱們再控制器上添加角色驗證,以下:java

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

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

若是用戶沒有User角色,可是強制訪問會怎麼呢?下面咱們再web.config配置文件中添加一個跳轉頁面,沒有經過角色驗證的用戶會跳轉到指定的頁面,下面是跳轉到登陸頁面Logindom

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

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

 

2.防止XSS攻擊編碼

   1.對全部的內容進行HTML編碼, 使用@Html.Encode 或者 @Html.AttributeEncodespa

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

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

 

3.令牌驗證blog

    在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  
誠邀各路高手、初學者加入。

相關文章
相關標籤/搜索