您应该在服务器端进行验证吗?

IT技术 javascript ajax validation
2021-02-16 20:35:32

您应该在服务器端进行验证,还是只在客户端进行验证?

@TheTXI

我很高兴您感到惊讶,我只是不想遗漏任何可能改变某人回答以提供虚假信息的内容。


似乎很多人都谈到了我的目标,但 Ajax 的部分应该保留在我的问题中,因为这是最重要的部分。

然而,阅读我知道的帖子,一个坏人可以轻松地加载萤火虫并将我的按钮更改为提交按钮并发布帖子。或者其他方式。

6个回答

浏览器/客户端验证很方便。你不能依赖它。您绝对需要使用服务器端验证来复制任何客户端级别的验证。

我现在可以很容易地改变某人说我的非峰会按钮输入提交并发布帖子。然而,对于像 xVal 这样的东西,这将减少重复代码。
2021-04-30 20:35:32

好吧,你的所有代码都是正确的。当黑客用他们喜欢的一个替换你的 javascript 时会发生什么,或者只是简单地提交 POST 和 GET,就好像它是你的代码一样?

在客户端进行验证是一个可用性问题。

在 USAGE 点进行验证是一个安全问题。

最后一点很重要,因为如果您没有在使用点进行验证,就会使您的代码高度耦合。如果您更改一个module,它会破坏其他地方的内容,因为您在错误的地方进行了验证。

例如,在将数据存储到 SQL 数据库之前,您针对 SQL 注入验证数据——如果您选择一个好的库,该库将为您执行此操作。当您将数据显示为 HTML 时,您可以根据 CSS 验证数据。但是,如果您将数据公开为 XML、RSS 或 JSON,那么验证就不同了——如果您仅在输入时对其进行验证,您将无法阻止其他格式的漏洞利用,并且您的输入例程将与输出相关联您选择的格式。

我总是把它看作

  • 客户端验证是为了可用性
  • 服务器验证是为了安全。

是的,您应该始终进行服务器端验证。Javascript/AJAX 很高兴为用户提供即时反馈,但它并没有在服务器端为您提供任何保护。

你不能相信用户输入。Javascript 验证太容易绕过了。因此,您需要检查服务器端的输入。

总之是的。您永远不能依赖浏览器发送给您的内容是否合法。