安全性

      咱们常常会看到一些具备典型特征的安全性攻击方面的新闻报道,这些报道声称黑客已可以窃取我的信息,或是敏感数据已遭到之外曝光。可悲的实际状况是,许多此类事件实际上是很容易避免的。做为开发人员,咱们须要的是以安全性意识去设计应用程序,以阻止这类问题。web

1、认证与受权浏览器

      最基本的安全关注之一是,确保只有正确的用户才容许对系统进行访问。这就是认证(Authentication)与受权(Authorization)所起的做用。安全

      认证确保用户已提供了适当的访问系统所需的凭据。一旦用户登陆(典型的是经过提供用户名和口令,或是某种其余令牌,如SSH密钥,或加密令牌),那么他们即是已认证的了。网站

      受权发生在认证以后,且包括对给定用户是否有权对系统作某事(如查看一个页面或编辑一条记录)的决策。当用户访问一个其余人不可用的资源时,必须获得明确的受权。编码

1.以AuthorizeAttribute限制访问加密

      ASP.NET MVC随带了一个叫作AuthorizeAttribute的过滤器注解属性,它为实现受权规则提供一种现成可用的简单方式。与认证方案协同使用,此注解属性可用来确保只有某些用户才能访问特定的控制器动做。spa

      默认状况下,用“Internet Application”项目模板建立的ASP.NET MVC新项目,会使用表单认证方案来启用认证,这种认证方案是在web.config文件的system.web/authentication部分中定义的:设计

      因为启用了表单认证,当用户试图访问需受权的资源时,他们会被重定向到loginUrl,以便输入用户名和口令。orm

      做为表单认证的一种替代办法,ASP.NET也支持Windows认证。Windows认证会尝试使用用户的Windows登陆凭据对用户进行认证,于是它最适合于企业内部网应用程序(Intranet Application)。这时可将web.config中的<authentication mode="Forms">改为<authentication mode="Windows">来启用它。blog

      因为启用了认证,咱们能够对控制器动做(或是对整个控制器)运用AuthorizeAttribute,以限制对它们的访问。若是用户未被容许对动做进行访问,AuthorizeAttribute将对浏览器传递一个“401Unauthorized(未受权)”的HTTP状态码,以指示拒绝该请求。使用表单认证的应用程序而后会将浏览器重定向到登陆页面,只有用户已被认证才能够继续执行。

      AuthorizeAttribute最简单的使用只要求当前用户已被认证:

 

      为了对一个动做作进一步限制,咱们能够指定AuthorizeAttribute所要求的用户或角色。

      此例只容许名为“admin”的用户访问这一动做。

      这种硬编码用户名的作法可能过于局限,更有意义的作法是指定角色。

    此例对Developers动做的访问将只容许admins或developers角色中的用户。

2、跨网站脚本攻击(XSS)

      跨网站脚本攻击(Cross-Site Scripting, CSS,XSS)是一项恶意用户操纵系统的技术,它使脆弱网站上呈现特殊的JavaScript(一种访问浏览器随后会执行的脚本)。

       按惯例,恶意脚本会向含有敏感数据的第三方网站发送一个请求。这即是跨网站部分。一个用户将一个脚本放在一个向另外一个密谋网站发送秘密数据的网站。黑客的技巧是让该脚本在脆弱网站上运行。

1.动做中的XSS

       已知案例,能够执行一个本地的XSS模拟攻击。案例包含两个简单的ASP.NET MVC应用程序,其中一个是脆弱网站,它有一个简单的评论递交页面功能;另外一个网站时攻击站,它简单地收集这些递交,因而咱们即可以看到这种攻击可否运行。

相关文章
相关标签/搜索