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