首页 > 代码库 > MVC 成员资格、授权和安全性
MVC 成员资格、授权和安全性
要求用Authorize 特性登陆
要求登陆系统的用户访问哪些由应用程序指定的 URL。我们可以通过使用控制器上或者控制器内部特定操作上的Authorize 操作过滤器来实现。
Authorize:特性是 ASP.NET MVC 自带的默认授权过滤器,可用来限制用户对操作方法的访问。将该特性应用与控制器,就可以快速将其应用与控制器中的每个操作方法。
1.Authorize 在表单身份验证和 AccountController 控制器中的用法
*ASP.NET MVC 的 Internet Applicaton 模板包含一个基本的 AccountController ,它支持 Membership 和 OAuth验证的账户管理。
*Authorize 特性是一个过滤器,也就是说,它能优先于相关控制器操作执行。即 Authorize 特性首先执行它在 OnAuthorization 方法中的主要操作,如果用户身份验证失败,它将产生HTTP 401(未授权)的状态码,并重定向到应用程序 web.config 文件中定义的登陆页面,代码如下:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880">
</authentication>
这个重定向地址包含一个返回URL,以便成功登陆系统后,Account/LogOn 操作可以重定向到最初的请求页面。
*CheckoutController 上加入特性[Authorize] 中的所有操作都允许注册用户访问,但禁止匿名访问。
要求角色成员使用 Authorize 特性
fh
Web应用程序中安全向量的用法
fh
防御性编码
fh
总结
*永远都宎醒醒用户提供的任何数据
*每当渲染作为用户输入而引入的数据时,请对其进行HTML编码,如果数据作为特性值显示,就应对其进行HTML 特性编码(HTML-attribute-encode))
*考虑好网站的那些部分允许匿名访问,那些部分要求认证访问
*不要试图自己净化用户的HTML输入(使用白名单或其他方法)——否则就会失败
*在不需要通过客户端脚本(大部分情况下)访问cookic时,使用 HTTP - only cookie
*请记住,外部输入不是显示的表单域,因为它包括 URL 查询字符串、隐藏表单域、Ajax请求以及我们使用的外部Web服务结果等
*强烈建议使用 AntiXSS 库(www.codeplex.com/AntiXSS)