如何防止代码/程序访问 Web 应用程序?

Posted

技术标签:

【中文标题】如何防止代码/程序访问 Web 应用程序?【英文标题】:How to prevent code/program access to web application? 【发布时间】:2012-02-13 10:02:33 【问题描述】:

我想阻止任何人试图通过代码访问我的网站。某种意义上的代码,任何类似于bot的程序,都会导致流量激增。

例如,

URL url = new URL("http://www.example.com");
URLConnection yc = url.openConnection();

我想阻止上面的java代码打开一个连接。

这可能吗?如果我可以这样做,是否会导致任何副作用(用户无法通过特定浏览器访问该网站)?

【问题讨论】:

请记住,所有对您网站的访问都是通过代码进行的,因为 Firefox、Chrome 等都是程序。您可以尝试检测看起来或行为与这些浏览器不同的程序,但这并非万无一失。通常,没关系。 我很可能将人类与机器人区分开来。 您可以检查用户代理标头,您可以提供并检查 cookie,但最终任何机器人都可以伪装成浏览器。 虽然有像captcha 这样的东西只能阻止导航到其他页面(表单提交)。 【参考方案1】:

简短的回答是你不能。但是,您可以进行一些检查,例如用户代理(但同样,这很容易更改/欺骗)。

但是假设您想获得多数,请检查用户代理是否可以接受,检查访问您页面的移动设备的设备。

我知道人们采用的另一种方法是跟踪源发出的请求数量,并设置请求/时间阈值来测试连接是否“合法”。我自己没有这样做,所以我不能说它的可靠性。

如果您想区分机器人,像 ( ReCaptcha) 这样的工具会有所帮助。

【讨论】:

以上是关于如何防止代码/程序访问 Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

限制对 Angular2 Web 应用程序后端的访问?

如何防止 Node.js Web 服务器停机

如何防止签名令牌用户通过浏览器开发工具访问 API 响应?

web 安全 初探 (正在更新)

使用带有 github 操作的 Flutter Web 时如何访问机密

恶意软件将代码注入我的 Dojo/WebSocket 应用程序:如何防止?