ASP.NET MVC:数据注释验证足够了吗?
|
我在ASP.NET MVC 2中广泛使用数据注释验证。这个新功能已经是一个巨大的节省时间,因为我现在可以在一个地方定义客户端验证和服务器端验证。然而,虽然我做一些详细的测试,我意识到,如果我依靠数据注释验证,有人绕过服务器端验证是很容易的。例如,如果我通过使用[必需]属性注释属性来定义必填字段,并在表单中为该必填字段放置了一个文本框,用户可以简单地从DOM中删除文本框(这可以通过Firebug轻松完成)现在,在Controller内部的ModelBinding过程中,将不会在该属性上触发数据注释验证。为了确保触发“必需”验证,我可以在ModelBinding发生后重复验证,但是我将重复验证逻辑。 每个人对验证的建议是什么?数据注释验证足够吗?还是需要重复验证以确保验证在所有情况下都被触发? 后续评论: 我将此后续评论作为一个单独的问题,因为它提出了一个不同的问题,而不是原来的。 解决方法我认为要保持警惕关于安全,你应该选择你使服务器验证的优先级,并确保这始终是你的后备。您的服务器验证应该在没有客户端验证的情况下工作。客户端验证更多的是对于UX和对于您的设计至关重要的,它是次要的安全性。考虑到这一点,你会发现自己重复验证。目标通常是尝试设计您的应用程序,以便服务器和客户端验证可以尽可能集成,以减少在服务器和客户端上验证所需的工作。但请放心,你必须做这两个。如果绕过客户端验证(通过DOM操作)避免服务器验证(看起来您正在指示),则可能无法正确使用此实例的服务器验证。您应该在控制器操作或服务层中再次调用服务器验证。您描述的场景不应该是无效的服务器验证。 使用您描述的方案,DataAnnotation属性方法应该足够了。看来你只需要做一些代码更改,以确保在提交表单时也调用服务器验证。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何使用JwtSecurityTokenHandler和JWKS端点验证
- ASP.NET MVC全局授权过滤器强制登录AllowAnonymous操作
- ASP.NET支持C吗?
- Autofac和ASP.NET Web API ApiController
- asp.net-mvc – 在cshtml中折叠C#块并保存
- asp.net-mvc-3 – ASP.NET MVC 3和Razor的ASHX处理程序
- asp.net核心中的Request.CreateResponse
- asp.net – 为什么DropDownList.SelectedValue依赖于viewst
- asp.net-mvc-3 – AZURE ACS – Windows Live ID – 如何获
- asp.net-mvc – 为现有的基于MVC的网站创建REST API
- asp.net-core – 如何在Entity Framework Core中
- asp.net – jquery下拉选择器AutoPostback
- asp.net-mvc – 神控制器 – 如何防止它们?
- asp.net-mvc – 我应该每个请求使用一个HttpClie
- 如何为ASP.NET身份设置密码规则?
- asp.net-mvc – ViewModel有自己的逻辑吗?
- asp.net – aspnet的最大值:MaxHttpCollectionK
- asp.net-mvc – ASP.NET MVC:通过两个控制器操作
- asp.net-mvc – 使用带有MVC3的plupload
- asp.net-mvc-3 – 使用ASP.NET MVC3 Razor进行字
