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