在禁用javascript时依赖于javascript验证来保护表单的最佳方法

时间:2013-06-14 15:58:22

标签: php javascript html validation

所以到目前为止我已经准备好了客户端验证,但是如果javascript被禁用怎么办?... 我在想什么是确保我获得的数据有效的最佳方法:

  1. 首先,我还可以测试服务器端的数据,但是所有的javascript验证都是如此。
  2. HTML 5获得了一些验证功能,但浏览器支持有限。
  3. 我正在考虑用Ajax做些什么,但还不能指责ajax解决方案。
  4. 所以我非常感谢在javascript关闭时获得解决方案的一些建议。

4 个答案:

答案 0 :(得分:7)

  1. 永远不要相信用户输入。
  2. 永远不要相信用户输入。
  3. 永远不要相信用户输入。
  4. 永远不要相信javascript验证,因为它在浏览器上执行,因此可以非常轻松地篡改 。考虑它是用户输入的一部分。
  5. 永远不要相信用户输入。
  6. 服务器端验证是始终必需,无论是否有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规则。