1

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

  1. 首先,我还可以在服务器端测试数据,但所有 javascript 验证的意义何在。
  2. HTML 5 有一些验证功能,但浏览器支持有限。
  3. 我在想一些关于 Ajax 的事情,但还不能指望 ajax 解决方案。

因此,我将非常感谢在关闭 javascript 时获得一些解决方案的建议。

4

4 回答 4

7
  1. 永远不要相信用户输入。
  2. 永远不要相信用户输入。
  3. 永远不要相信用户输入。
  4. 永远不要相信 javascript 验证,因为它在浏览器上执行,所以很容易被篡改。考虑它是用户输入的一部分。
  5. 永远不要相信用户输入。

无论是否有 javascript 验证,服务器端验证始终是强制性的。除此之外,Ajax 只是动态 javascript 调用 URL 的时髦名称。没有 Javascript,没有 Ajax。

除了 HTML5 验证(也不能依赖它,因为它可以像 Javascript 验证一样容易地规避)之外,我无法想到其他任何东西。

于 2013-06-14T16:03:01.833 回答
2

即使打开了 JavaScript,仍然完全有可能操纵表单以在服务器端发布您可能不期望的信息。数据存储和操作始终需要服务器端验证。

于 2013-06-14T16:04:56.730 回答
1

请记住这个咒语:

JavaScript 验证对用户有利,但服务器验证对安全性有利

还有这个:

用户数据总是邪恶的。

换句话说,始终执行服务器验证,因为最终您正在处理可能已被篡改的用户数据。

于 2013-06-14T16:06:06.267 回答
1

是的,您应该始终同时拥有验证客户端(javascript)和服务器端(您选择的语言的业务对象)。

您绝对不能信任所有用户单独使用/离开客户端。

客户端验证是为了帮助用户保持清醒,这样他们就不会发布错误,重试,发布错误,再试一次。你也减少了到你的服务器/对象的流量。每个人都喜欢这样。

但是,如果您认真对待验证,则需要让服务器端进行最终验证。如果您只能选择其中一个(并且如果客户端禁用了 js ......)您选择服务器端。

如果您想稍微减少看起来像冗余验证的内容,请将您的表单 ajax 发布/调用到在服务器上调用您的 BUSINESS LOGIC 规则的验证器,但是当最终发布发生时,它需要再次运行 BUSINESS LOGIC 规则在你提交之前。

于 2013-06-14T16:12:04.137 回答