【发布时间】:2017-11-23 17:35:09
【问题描述】:
我有 $.post jquery 代码在客户端汇总我的表单。当我在 chrome 控制台上执行自定义 jquery 时,服务器正常工作。我认为它不安全,因为任何人都可以在他们的控制台上编写 jquery 并访问我的网站。如何预防这个问题? 有什么方法可以知道请求是否来自我的网站或不在服务器端?我在 SO Prevent fake looping ajax requests to PHP 中发现了类似的问题,但我不明白如何解决我的问题。
【问题讨论】:
-
听起来您对 Web 请求的工作方式有一些重大误解。你应该读一读:learn.userfrosting.com/background/…
-
永远不要相信任何输入。验证(是否为登录用户)、验证(数据是否符合您的预期)和速率限制(仅允许在一段时间内限制请求数量)
-
@NyeinChan:好的,那你的问题是什么?当用户提交一个有效的请求时,它会被保存到数据库中。为什么这么糟糕?
-
@NyeinChan:如果在短时间内提交许多请求无效,那么听起来服务器没有执行您想要的所有验证。也许你想要的是验证码或类似的东西?也许您想在处理请求时向服务器端代码添加更多验证逻辑?您需要确定的具体是您要防止的,然后采取措施防止它。试图阻止用户使用他们的网络浏览器的调试工具不是这些步骤之一。
-
@NyeinChan Google 术语“速率限制”和“节流”。这与 jQuery 无关——有人可以通过多种方式在短时间内提交大量请求。见owasp.org/index.php/Blocking_Brute_Force_Attacks 和owasp.org/index.php/Denial_of_Service