所以到目前为止我已经准备好了客户端验证,但是如果javascript被禁用怎么办?... 我在想什么是确保我获得的数据有效的最佳方法:
所以我非常感谢在javascript关闭时获得解决方案的一些建议。
答案 0 :(得分:7)
服务器端验证是始终必需,无论是否有javascript验证。除此之外,Ajax只是对URL的动态javascript调用的一个时髦名称。没有Javascript,没有Ajax。
除了HTML5验证(必须不)之外,我无法想到任何其他内容,因为它可以像Javascript验证一样容易被规避。)
答案 1 :(得分:2)
即使启用了JavaScript,仍然可以完全操作表单来发布您可能不会在服务器端预期的信息。数据存储和操作需要服务器端验证始终。
答案 2 :(得分:1)
请记住这句口头禅:
JavaScript验证对用户有利,但服务器验证有利于安全。
还有这个:
用户数据始终是邪恶的。
换句话说,总是执行服务器验证,因为在一天结束时,您正在处理可能已被篡改的用户数据。
答案 3 :(得分:1)
是的,您应始终拥有BOTH验证客户端(javascript)和服务器端(使用您选择的语言的业务对象)。
您完全不能信任所有用户单独使用/离开客户端。
客户端验证是为了帮助用户保持理智,这样他们就不会发布错误,再试一次,发布错误,再试一次。而且你也减少了服务器/对象的流量。每个人都喜欢这样。
但如果您认真对待验证,那么 NEED 让您的服务器端进行最终验证。如果你只能选择一个或另一个(如果客户端有js禁用...)你选择服务器端。
如果您希望略微减少冗余验证,请将表单ajax发布/调用验证器,该验证器在服务器上调用您的BUSINESS LOGIC规则,但是当最终发布时,它需要通过BUSINESS运行提交前再次使用LOGIC规则。