【发布时间】:2011-07-07 22:54:27
【问题描述】:
我正在使用 GWT 构建一个 Web 应用程序,并使用一个简单的 java 类在客户端执行文本框和其他字段的验证。我不确定用户可以在运行该代码期间绕过这些验证。请告诉我在表单中进行验证的最佳安全方式。
【问题讨论】:
标签: validation gwt
我正在使用 GWT 构建一个 Web 应用程序,并使用一个简单的 java 类在客户端执行文本框和其他字段的验证。我不确定用户可以在运行该代码期间绕过这些验证。请告诉我在表单中进行验证的最佳安全方式。
【问题讨论】:
标签: validation gwt
通常,您需要在客户端和服务器上同时验证:在客户端上以立即向用户反馈(方便,可选),在服务器上以确保安全(必须!)。
与在客户端使用 jQuery 或类似的应用程序以及在服务器端使用不同语言的应用程序相比,使用 GWT 获得的优势是,您可以重用相同的验证代码进行客户端和服务器验证.
【讨论】:
浏览器中的 Javascript 可能会被黑客入侵/绕过,因此没有安全的方法可以做到这一点。您不应依赖 javascript 来执行任何与安全相关的功能。
您必须在服务器上进行安全检查,以确保您的应用安全。
【讨论】:
这是一篇关于我对客户端与服务器验证的看法的简短博文:
http://ashtoncthomas.blogspot.com/2011/03/gwt-validation-on-client-server.html
您可以在几个方面进行验证以及一些平衡,例如在客户端和服务器之间共享代码。
您是否在创建 DTO 之前或之后进行验证(如果您在之后进行验证,那么您可以共享一些代码,但您不能信任输入)
我构建了一个自定义验证框架,可以轻松地在客户端和服务器上捆绑验证,但每种情况都不同,因此我建议找到适合您的大多数项目或至少适合您当前项目的东西。
【讨论】:
自 2006 年起就承诺进行适当的客户端验证! http://code.google.com/p/google-web-toolkit/issues/detail?id=343 我没有屏住呼吸。
我已经从脆弱的自制客户端验证转移到往返验证,在这种验证中,您提交一个持久请求,实体处于无效状态。如果您有一个运行服务器端的验证器,RequestFactory 将在 Receiver.onViolation() 中向您发送一个 Set。
这对我来说意味着更少的代码,代价是客户端接收验证结果的延迟很小。它仍然比纯 HTML 表单快得多。
看看验证实体: http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html
【讨论】: