Javascript 如何避免在浏览器的“网络”选项卡中显示多个完整的请求信息

Javascript 如何避免在浏览器的“网络”选项卡中显示多个完整的请求信息,javascript,c#,bots,Javascript,C#,Bots,我们有一个表单,如果有人填写了该表单,我们就是在点击PostAPI 当用户提交表单时,API的完整信息(请求url、标题)是可见的,我在想,如果有人开始通过服务器端代码点击这个POST API,我们的表中会充满垃圾值吗 我们如何避免这些通过API进入系统的海量数据被C#client、POSTMAN或任何其他服务器端客户端直接命中?这是一个真正的开放式问题,但我认为没有办法完全按照您的要求去做(确定是否有请求来自浏览器),如果可能的话,您也不应该这样做——用户可能有合法的理由使用浏览器以外的东西,

我们有一个表单,如果有人填写了该表单,我们就是在点击PostAPI

当用户提交表单时,API的完整信息(请求url、标题)是可见的,我在想,如果有人开始通过服务器端代码点击这个POST API,我们的表中会充满垃圾值吗


我们如何避免这些通过API进入系统的海量数据被C#client、POSTMAN或任何其他服务器端客户端直接命中?

这是一个真正的开放式问题,但我认为没有办法完全按照您的要求去做(确定是否有请求来自浏览器),如果可能的话,您也不应该这样做——用户可能有合法的理由使用浏览器以外的东西,或者有人可能希望将您的API集成到更大的流程中,等等


您应该通过身份验证来处理此问题-要求用户使用您的API进行身份验证,然后如果他们行为不端,您可以禁用他们的用户帐户(通过某种滥用检测手动或自动)。

有时,web表单无法或不需要身份验证。在这些时候,我使用了在服务器上生成的密钥,该密钥嵌入到表单中


表单将键和其余数据一起发回,然后您可以根据键做出任何需要做出的决策。像限制提交速率,只允许一次提交,然后密钥过期等等。

使用验证码:向用户提出挑战以证明自己是人,通常向填写表单的人显示包含一些乱码文本的图像和他被要求在表格中转录图像的文本内容。如果验证码解决方案错误或丢失,则将丢弃对API的POST请求

许多类型的挑战通常被使用,例如音频/视频/逻辑/迷你拼图。您还可以以最适合自己的方式自定义挑战。例如,Google提供了ReCaptcha,一种带有js和服务器api的验证码服务

这有助于防止或减轻机器人,因为验证码是一项挑战,计算机很难,但人类很容易

使用一次性验证码令牌还可以防止您担心的重播攻击。此外,检查接收质询的ip和解决质询的ip是否相同有助于缓解其他伎俩


这仍然为下定决心的人向您的表单发送垃圾邮件留下了空间。因此,您还应该跟踪提交的数量,并按ip限制它们。

只需按ip限制请求,就像对每个不同的ip每分钟只做一次响应,如果请求太多,甚至会将其阻止一小时(天?周?永恒?)。如果有人试图发送垃圾邮件,那么他们不会意识到这没有任何效果。这是我处理垃圾邮件和安全性的常用方法。让他们认为这是可行的,但要确保它不是。然后,黑客们建立了一个免费的网站,提供令人满意的内容(利用你的想象力,看看什么样的内容可能会吸引成群结队的人),并让访问者回答验证码挑战!然后他们又拥有了你的站点。@Enke该服务器将不得不充当代理,它将被限制/阻止,因为它仍然是一个ip。验证码脚本通常检查调用页面的ip是否与下载验证码图像的ip相同。他们不必花钱建立一个包含需要的内容的web服务器,而是可以在众多可用的验证码解决平台中的一个平台上轻松使用它,该平台向黑客公开易于使用的API。这很公平,但我不明白他们为什么不能这样做,以便帖子直接从用户的网页上发布?您关于验证码解决API的观点很好。我以前从未听说过desiderable@ErikE他们如何获得验证码令牌/挑战?如果服务器从合法页面获取,则情况相同,因为必须提交解决方案的是服务器ip。而且,这是一个领域。公平地说,我只是认为在某些情况下,这种技术可能会起作用。很明显,这不是一条开着庞大车队的高速公路。