所以到目前为止,我已经准备好客户端验证,但是如果禁用了 javascript 怎么办?...我在想什么是确保我获得的数据有效的最佳方法:
- 首先,我还可以在服务器端测试数据,但所有 javascript 验证的意义何在。
- HTML 5 有一些验证功能,但浏览器支持有限。
- 我在想一些关于 Ajax 的事情,但还不能指望 ajax 解决方案。
因此,我将非常感谢在关闭 javascript 时获得一些解决方案的建议。
所以到目前为止,我已经准备好客户端验证,但是如果禁用了 javascript 怎么办?...我在想什么是确保我获得的数据有效的最佳方法:
因此,我将非常感谢在关闭 javascript 时获得一些解决方案的建议。
无论是否有 javascript 验证,服务器端验证始终是强制性的。除此之外,Ajax 只是动态 javascript 调用 URL 的时髦名称。没有 Javascript,没有 Ajax。
除了 HTML5 验证(也不能依赖它,因为它可以像 Javascript 验证一样容易地规避)之外,我无法想到其他任何东西。
即使打开了 JavaScript,仍然完全有可能操纵表单以在服务器端发布您可能不期望的信息。数据存储和操作始终需要服务器端验证。
请记住这个咒语:
JavaScript 验证对用户有利,但服务器验证对安全性有利。
还有这个:
用户数据总是邪恶的。
换句话说,始终执行服务器验证,因为最终您正在处理可能已被篡改的用户数据。
是的,您应该始终同时拥有验证客户端(javascript)和服务器端(您选择的语言的业务对象)。
您绝对不能信任所有用户单独使用/离开客户端。
客户端验证是为了帮助用户保持清醒,这样他们就不会发布错误,重试,发布错误,再试一次。你也减少了到你的服务器/对象的流量。每个人都喜欢这样。
但是,如果您认真对待验证,则需要让服务器端进行最终验证。如果您只能选择其中一个(并且如果客户端禁用了 js ......)您选择服务器端。
如果您想稍微减少看起来像冗余验证的内容,请将您的表单 ajax 发布/调用到在服务器上调用您的 BUSINESS LOGIC 规则的验证器,但是当最终发布发生时,它需要再次运行 BUSINESS LOGIC 规则在你提交之前。