如何从浏览器控制台停止数据发布

How to stop from data post from browser console?

本文关键字:数据 控制台 浏览器      更新时间:2023-09-26

在过去的几个月里,我一直在思考这个问题。最近,我开始使用完整的 JS Build 前端,其中表单使用 Ajax 发布。

我有一个疑问,如何在服务器端识别数据来自哪里。它是来自实际form事件还是来自browser console.?

我尝试过的:

创建双向握手:在发布form之前,应用程序将联系服务器,服务器将在cookie内发送token,该将与form帖子一起发回。但是,即使我们通过浏览器控制台发布,该cookie也会携带令牌。所以,失败了。

绑定隐藏字段

:但是,如果有人从浏览器控制台发布数据,他肯定会寻找隐藏字段。基本上,他会复制我的AJAX,以相同的方式发送相同的请求。失败!!

我无法弄清楚这部分。谁能帮忙?

提前谢谢。

互联网

编程的规则#1:永远不要相信来自客户端的任何内容。曾。

互联网编程的规则#2:永远不要相信来自客户端的任何东西。曾。

互联网编程的规则#3:你不能让客户端值得信赖。

我知道第一条规则重复了两次,但这是值得的。

根本没有办法做你想做的事情。

希望通过 AJAX 请求或 POST 请求将数据发送到您的服务器的人可以轻松执行以下任一操作:

  • 使用浏览器工具或代理修改表单,并强制输入他想要的任何信息。
  • 通过 fiddler2 等工具捕获整个事务,并更改值并重新发送它们。 无需浏览器。
  • 修改从您的网站运行的代码以发送(或允许(他希望发送的任何数据。
  • 使用像Curl这样的工具来伪造浏览器并发送他想要的任何信息。

在您的服务器上,根本无法知道该信息来自何处。

从安全的角度来看,你根本不能相信任何东西 - 永远

验证凭据,为用户提供登录令牌(通常是cookie(,然后仍然对客户端发送给您的所有内容持怀疑态度。 如果存在不应更改或更新的内容,请确保后端不允许更改或更新它。

我们的应用程序中有大量代码,如下所示:

if (user.HasPermission("MayUpdateFirstName") {
   record.FirstName = FormData.FirstName
}
这样,如果传入了

FirstName,并且用户无法修改它,则不会对其进行修改。