仅供浏览器环境接收的信息传输?

时间:2013-10-05 11:03:37

标签: javascript security websocket client

作为思想实验的一部分,我试图确定服务器是否有希望提供仅供浏览器环境接收和使用的数据,即机器人抓取我的网站无法读取的数据

显然,如果该信息是在源代码中发送的,或者实际上是通过任何常用的HTTP方式发送的,那么这可以由机器人获取 - 到目前为止,这么简单。

但是,如果信息是由服务器传输而不是作为websocket消息呢?这不会仅仅是由浏览器环境中的某些相应的(并且可能是经过身份验证的)JavaScript接收,从而阻止了它被机器人拦截吗? / p>

(这是基于我的假设,即机器人没有客户端环境,本质上是一个恶意的服务器端脚本,通过类似cURL的方式调用网站,假装是用户)。

另一种表达这个问题的方法可能是:使用websockets的web实现,是否总是由客户端环境(即JS)完成消息的接收?

2 个答案:

答案 0 :(得分:1)

我无法回答有关websockets的问题,但是一个充满动力的攻击者会找到一种方法来模拟你需要的任何环境。通过ajax加载此内容,您可以消除休闲机器人。您可以使用robots.txt消除表现良好的僵尸程序。

答案 1 :(得分:1)

使用WebSocket没有任何区别。您无法逃避以下事实:您始终可以编写非浏览器客户端,其外观和行为与任何标准浏览器完全相同。

我可以伪造:您可能会阅读的任何HTTP标头(如浏览器供应商等)。 origin标题也无济于事(我可以伪造它)。饼干也不是。我会读它们然后把它还给你。

您可以通过使用强大的验证码来保护您的网站,并在验证码被解决后设置Cookie。这取决于机器人无法解决验证码。