从具有公共站点的js访问127.0.0.1上的Web服务器的缺陷

时间:2008-12-02 01:47:02

标签: security web-applications hardware

我正在考虑探索让我们的客户端软件在高端口上作为服务运行并从127.0.0.1监听简单的http GET请求的想法。理论是我可以通过js从我的网站提供的网页访问此服务。

1)用户安装将自身安装为服务的客户端软件,并在127.0.0.1:8080等待经过身份验证的请求

2)当用户点击我的主页页面上的js发出xhtml请求到127.0.0.1:8080并询问状态

3)主页然后再向我的网络服务器发送另一个js请求,发送它收到的状态。

这将允许我的用户从浏览器实时上传/下载和编辑USB连接设备上的文件。轮询可能是与我们今天所做的接近的后备方法。

有没有人这样做过,有什么潜在的陷阱?这甚至会起作用吗?

4 个答案:

答案 0 :(得分:3)

我看不出任何潜在的陷阱。不过我确实有几点。

1 /您可能希望确保您的服务仅接受来自本地计算机(127.0.0.1)的传入连接。否则,任何人都可以查看你的JavaScript,并发现它正在与[你的IP]:8080交谈。然后他们可以从远程站点(安全漏洞)尝试自己。

2 /我不会使用端口8080,因为它通常用于其他事情(备用HTTP服务器等)。使其可配置并选择一个漂亮的高随机类型值。

3 /我不确定你在尝试使用第3点做什么,但我认为你正在尝试将状态发回给用户。在这种情况下,为什么主页上的JavaScript只能在单个会话中获取状态并输出/更新要呈现给用户的HTML?你的“另一个js请求回到我的网络服务器”对我没有意义。

答案 1 :(得分:1)

您可能无法对127.0.0.1执行xml http请求,因为XMLHTTPRequest通常仅限于与提供主内容相同的域。如果服务器在客户端的计算机上,我不确定是否适用此限制。话虽这么说,您仍然可以创建一个<script>标签,其中src指向127.0.0.1,并让Web服务器返回一些Javascript来运行。如果您只需要一个简单的响应,这可能会很好。

答案 2 :(得分:0)

我认为避免在JavaScript和HTML中实现应用程序逻辑会好得多。一旦用户点击网页上的按钮,JavaScript就会向您的服务发送请求并允许其完成剩余的工作。

答案 3 :(得分:0)

您可能会遇到第1步(客户端自行安装)的问题,具体取决于您的目标用户群。

  • 您需要为每个支持的环境(Win2K,Vista,Linux,MAC OS 9.0 / 10.0等)进行自定义安装。
  • 如果您的用户处于工作PC的锁定状态,则根本不允许这样做。
  • 对于某些用户而言,除非您明确指出您将安装作为服务运行的软件,否则这可能看起来与木马相似。
  • 你没有提到一个unistall程序。用户反感“Adobe”之类的软件,它自行安装并且没有提供合理的卸载选项
  • 从根本上讲,这种方法很合理,并且有一些商业产品正在使用这种方法!