如何避免多个 POST 因为完整的请求信息出现在浏览器的网络选项卡中
How avoid multiple POST as complete request information comes in network tab of browsers
我们有一个表格,如果有人填写该表格,我们就会点击 POST API。
当用户提交表单时,可以看到 API(请求 url、headers)的完整信息,我在想是否有人开始点击这个 POST API 通过服务器端代码,我们的表将充满垃圾值?
我们如何避免这些通过 API 进入系统的大量数据被 C# 客户端、POSTMAN 或任何其他服务器端客户端直接命中?
这是一个真正的开放式问题,但我认为没有办法完全按照您的要求进行(确定地检测请求是否来自浏览器),如果可能的话,您也不应该 -用户可能有正当理由使用浏览器以外的东西,或者有人可能想将您的 API 集成到更大的进程中,等等
您应该通过身份验证处理此问题 - 要求用户通过您的 API 进行身份验证,然后如果他们行为不当,您可以禁用他们的用户帐户(手动或自动使用某种滥用检测)。
有时 Web 表单无法或不需要进行身份验证。在那些时候,我使用了在服务器上生成的密钥,并将其嵌入到表单中。
表单将密钥连同其余数据发回,然后您可以根据密钥做出任何需要做出的决定。比如限制提交的速率,只允许一次提交然后使密钥过期等...
使用验证码:向用户提出挑战以证明是人,通常向填写表格的人显示包含一些乱码文本的图像,并且(她)需要他转录文本内容形式中的图像。如果验证码解决方案错误或缺失,则 POST 对 API 的请求将被丢弃。
许多类型的挑战都是常用的,例如 audio/visual/logic/mini-puzzles。您还可以以最适合您的形式的方式自定义您的挑战。比如Google提供了ReCaptcha,一个带有js和server的验证码服务api.
这有助于您防止或缓解机器人程序,因为验证码是一项对计算机来说非常困难但对人类来说很容易的挑战。
使用一次性验证码令牌还可以防止您担心的重放攻击。此外,检查收到挑战的 ip 和解析它的 ip 是否相同有助于缓解其他技巧。
这仍然为有决心的人向您的表单发送垃圾邮件留下空间。所以你还应该跟踪提交的数量并通过 ip 限制它们。
我们有一个表格,如果有人填写该表格,我们就会点击 POST API。
当用户提交表单时,可以看到 API(请求 url、headers)的完整信息,我在想是否有人开始点击这个 POST API 通过服务器端代码,我们的表将充满垃圾值?
我们如何避免这些通过 API 进入系统的大量数据被 C# 客户端、POSTMAN 或任何其他服务器端客户端直接命中?
这是一个真正的开放式问题,但我认为没有办法完全按照您的要求进行(确定地检测请求是否来自浏览器),如果可能的话,您也不应该 -用户可能有正当理由使用浏览器以外的东西,或者有人可能想将您的 API 集成到更大的进程中,等等
您应该通过身份验证处理此问题 - 要求用户通过您的 API 进行身份验证,然后如果他们行为不当,您可以禁用他们的用户帐户(手动或自动使用某种滥用检测)。
有时 Web 表单无法或不需要进行身份验证。在那些时候,我使用了在服务器上生成的密钥,并将其嵌入到表单中。
表单将密钥连同其余数据发回,然后您可以根据密钥做出任何需要做出的决定。比如限制提交的速率,只允许一次提交然后使密钥过期等...
使用验证码:向用户提出挑战以证明是人,通常向填写表格的人显示包含一些乱码文本的图像,并且(她)需要他转录文本内容形式中的图像。如果验证码解决方案错误或缺失,则 POST 对 API 的请求将被丢弃。
许多类型的挑战都是常用的,例如 audio/visual/logic/mini-puzzles。您还可以以最适合您的形式的方式自定义您的挑战。比如Google提供了ReCaptcha,一个带有js和server的验证码服务api.
这有助于您防止或缓解机器人程序,因为验证码是一项对计算机来说非常困难但对人类来说很容易的挑战。
使用一次性验证码令牌还可以防止您担心的重放攻击。此外,检查收到挑战的 ip 和解析它的 ip 是否相同有助于缓解其他技巧。
这仍然为有决心的人向您的表单发送垃圾邮件留下空间。所以你还应该跟踪提交的数量并通过 ip 限制它们。