【问题标题】:What can people do with javascript includes?人们可以用 javascript 做什么?
【发布时间】:2015-12-01 14:36:00
【问题描述】:

我们正在与第 3 方交谈,希望将他们的一些数据包含在我们的网站上,他们希望通过 iframe 来实现,由于响应性原因,我不喜欢这样做。

他们提供的其他选项是包含一个 javscript 文件,该文件将接受一个参数来了解将结果放入哪个 DOM 元素。

基本上,这使他们可以访问我们网站的 javascript 范围,如果他们愿意,可以在其中执行隐藏 dom 对象等操作。

我的问题是,我需要考虑哪些安全问题?例如,他们能否在他们的 javascript 中编写恶意代码,最终从我们的服务器读取 .php 文件并从配置文件等中获取密码?还是他们唯一能做的事情与 DOM 相关?

【问题讨论】:

  • 好吧,你究竟是如何远程“读取”一个 php 文件的呢?如果您的服务器配置正确,则通过 http 访问任何 php 文件都会执行该文件,并且您只会看到脚本的输出。如果您获得了 php 源代码,那么您真的应该首先解雇设置您的服务器的人。如果关键配置文件存储在您网站的文档根目录中/下,那么您应该在解雇他们时向该人开火。

标签: javascript security external


【解决方案1】:

他们可以:

  1. 控制用户的 cookie,包括读取和修改 他们。

  2. 将用户重定向到他们想要的任何网站。

  3. 将他们想要的任何代码嵌入到页面中。

他们不能:

  1. 直接访问php文件。
  2. 直接访问任何服务器文件。

Javascript 在浏览器中运行,而不是在服务器上。

【讨论】:

    【解决方案2】:

    您实际上是在授予他们受信任的XSS 特权。
    如果您可以在 Web 浏览器中执行某些操作(发布帖子、“浏览”页面等),您可以使用 JavaScript 将其自动化。除非您(或您的用户)可以,否则他们将无法上传/修改您的 PHP 文件。

    对用户而言,您赋予他们冒充您的能力。
    对您而言,您赋予他们模拟用户的能力。

    【讨论】:

      【解决方案3】:

      他们能否在他们的 javascript 中编写恶意代码,最终从我们的服务器读取 .php 文件并从配置文件等中获取密码?

      他们可以在您页面上包含的 JavaScript 代码中为他们做任何可以在该页面上的 JavaScript 代码中做的事情。所以这可能是你可以在客户端做的任何事情。它包括(例如)抓取显示在您的页面上的会话信息,并能够将该信息发送到其他地方。

      如果您不相信他们不会这样做,请不要在您的页面中包含他们的 JavaScript。

      我们正在与第 3 方交谈,以将他们的一些数据包含在我们的网站上

      让他们以 data 的形式提供该信息,而不是代码,您通过 ajax 请求,并让他们为来自您的来源的请求的相关 URL 启用 Cross-Origin Resource Sharing。然后,您知道您只是获取他们的数据,而不是让他们运行代码。

      请注意,使用 JSONP 而不是 CORS 将使它们能够再次运行代码,因此如果您不信任它们,它必须是真正的 ajax 与 CORS。

      【讨论】:

      • 遗憾的是,他们拒绝授予我们从我们的服务器访问的权限,也拒绝为我们编写 API。我们的客户希望将他们的数据放在他的网站上,并简单地说它是这个或 iframe。
      • @Jebble:听起来你的选择要么使用 iframe,要么信任它们。
      • 很明显,99% 的信任仍然不够信任,所以它是 iframe。谢谢
      【解决方案4】:

      您不必担心 PHP 文件或配置文件,但窃取会话 cookie 或其他 XSS 式攻击肯定是个问题。

      为什么他们不能/不会以 API 的形式提供数据?

      【讨论】:

      • ajax 请求必须来自他们的服务器,因为该服务器使用 HTTP 访问控制标头,这将忽略来自我们服务器的访问
      • @Jebble 不幸的是,您在帖子中描述的两种方法也会有这个问题。最简单的方法是让他们将您添加到他们的 ACL 白名单中。
      • 我已经尝试过了,只是不会发生可悲的事情。据他们说,因为 ajax 调用是从他们的服务器发出的,结果只是显示在我们的网站上,他们的服务器不会拒绝访问。窃取 cookie 的部分:他们有可能保存登录用户的所有 cookie,并最终使用它来伪装成登录用户,对吗?
      • 是的,没错。从本质上讲,它们可以伪装成任何现有的会话,这显然具有重大的安全隐患。
      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2020-03-03
      • 2023-03-13
      • 2013-03-18
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-24
      相关资源
      最近更新 更多