在我的asp.net mvc程序中,用户将在一个字段中输入日期,在另一个字段中输入时间。时间将为24小时模式,因此用户可以输入00:00 - 23:59,日期应该是典型的mm / dd / yyyy。
有了可用于验证输入的所有不同选项,例如客户端的javascript / jquery / masked输入或mvc控制器中的c#,我发现很难找出哪种方式最好。
有没有人对此提出建议或建议?
答案 0 :(得分:9)
始终,始终是服务器端。客户端验证是一个很好的选择。
请记住,客户端验证通行证并不代表使用简单的嗅探器/注入工具到达服务器端的实际数据。
答案 1 :(得分:3)
同时使用!客户端和服务器验证非常容易实现。
客户端验证可以改善用户体验。没有人喜欢等待完成的回发告诉他们“我们的服务器不像你那个外国人那样做日期”。
服务器端验证可保护您的系统。没有服务器希望从精心设计的请求中进行SQL注入攻击。但是,请不要将此用于用户体验。这纯粹是为了保护您的系统并为禁用javascript的用户提供支持( - 公平地说,他们关心用户体验是什么样的。)
有一些可爱的客户端库让它变得非常容易。我最喜欢的是jquery validation plugin,但http://www.livevalidation.com/也很不错。
答案 2 :(得分:1)
我建议使用验证框架,例如xVal for MVC 1或内置支持DataCnnotations for MVC 2.这将以一种始终一致的方式为您生成服务器和客户端验证。
答案 3 :(得分:0)
如果您使用的是数据库,则应使用参数化查询或存储过程来确保数据验证。这也将帮助您进行潜在的SQL注入。
您应该在两端进行验证,但无论您在客户端上执行什么操作,都必须在服务器上进行验证。客户端验证只是一个“很好”,有助于用户交互和流程。
答案 4 :(得分:0)
两者都强调服务器端。有时人们会阻止javascript或先前的错误不会让验证脚本运行。
在服务器上执行DateTime.Parse或更好的DateTime.TryParse。