zoukankan      html  css  js  c++  java
  • ASP.NET MVC 应用程序的安全性,看一眼你就会了

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

  • 相关阅读:
    爬虫学习笔记(二)http请求详解
    学习自动化的正确姿势
    binascii模块
    python一些内置函数及方法
    C小点,随便记记
    C:<conio.h>
    C,动态数组
    php intval()函数漏洞,is_numeric() 漏洞,绕过回文判断
    Mp3stego使用,附题,实验吧misc-Canon
    原生js实现Ajax
  • 原文地址:https://www.cnblogs.com/kezhiping/p/3875460.html
Copyright © 2011-2022 走看看