【问题标题】:How to detect if a site visitor is browsing the site through Citrix XenApp?如何检测站点访问者是否通过 Citrix XenApp 浏览站点?
【发布时间】:2015-01-23 02:58:10
【问题描述】:

我们的客户有这个带有接收终端的小局域网,他们通过Citrix XenApp 流式传输Chrome 网络浏览器。为什么?我不知道。这很奇怪,但这种串联似乎破坏了他们在我们网站表单上提交的数据。一些物理上无法缓存的东西——被缓存在这个XenApp的某处。

这对我们来说是一个非常重要的错误,因为我们管理支付处理并且它正在兑现敏感的持卡人数据,这太不兼容 PCI DDS!

我们已经告诉他们在终端机器上安装普通的 Chrome 浏览器,他们说他们做到了。但第二天——同样的问题发生了。然后他们说——“哦,它又是一台带有Citrix XenApp 的旧机器。”呸!现在可能一周过去了,我们再次遇到同样的问题,但他们声称他们不再使用 XenApp,这是一个普通的本地 Chrome。

我不相信他们。但是我们如何证明它们是错误的呢?

TL;DR:是否有可能检测到:

  1. 网站访问者使用普通的本地 Chrome 浏览器或
  2. 在通过 Citrix XenApp 流式传输的 Chrome 浏览器下访问?

这是我们得到的USER_AGENT 的示例:

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, 像 壁虎)Chrome/39.0.2171.99 Safari/537.36

它看起来像一个完全正常的 Chrome 版本。尝试查看 HTTP 标头,并没有什么特别之处。

有没有办法确定这一点,甚至在理论上?

  1. 我们的应用程序堆栈是LAMP,因此是 PHP 标记。
  2. 请不要认为这是我们的软件错误。我们有数百个客户,数百万笔交易,而这种情况只发生在这个 Citrix XenApp 疯狂的客户身上。

编辑:这不是重复的!在这里,我谈论的是在浏览器中运行的网站和服务器端脚本。与具有 API 和 DLL 的 Windows 应用程序无关

【问题讨论】:

  • 为什么不设置 XenApp 的免费试用版并自己测试呢?这可能是一个好的开始?
  • @DannyThunder,这是一个很好的建议(如果我还没有想到的话,应该是),但不幸的是,这不是一个答案。
  • 没有作为答案发布,作为评论发布。你测试了什么?只是检查标题?也可以检查一下东西是如何缓存的?
  • 请解释一下您对缓存的看法
  • 你的问题很奇怪。无论如何,您如何发现某些数据被缓存在他们身边?

标签: php google-chrome http citrix xenapp


【解决方案1】:

简短的回答:你真的不能...... XenApp 是,就所有意图和目的而言,远程桌面。事实上,在某一时刻,Microsoft RDP 和 Citrix 是同一个代码库,来回获得许可。

更长的答案:当您通过 XenApp 启动 Chrome 时,Chrome 实际上是在服务器上启动的。然后,显示内容被捕获、重定向并通过 ICA 流式传输到客户端。通常,您无法通过标头或 HTTP 流量判断用户是否在运行 XenApp 的原因是,从 ChromeWebserver 的角度(或任何应用程序)来看,没有任何真正的变化。唯一的变化是在 UI 被渲染的地方。

我应该提到的一件事是,如果有人在大型安装中运行 XenApp,他们可能有一些 NetScaler 正在运行。如果是这样,它们可能会执行各种奇怪的 HTTP 缓存,因此您可能在错误的地方寻找缓存问题的解释。

【讨论】:

  • 感谢您提到 NetScaler,我对这个应用程序并不熟悉。将进一步调查,将这块骨头扔进火里。不过还有一个想法:如果这个 chrome 应用程序在多个用户之间“共享”。你认为它的 cookie 也是共享的吗?它可以让我有可能抛出一些单独的 cookie,如果它们相交,我可以猜测它们通过 XenApp 共享相同的 Chrome。你怎么看?
  • 如果它是共享的,那当然可以,但不幸的是它不是。每个用户/流都会在它自己的沙箱中获得一个新的应用实例——即使你遇到了麻烦编写某种 chrome 插件,它不会工作,你只会得到多个不知道彼此的独立实例。
  • 只是一些额外的信息,虽然它不会改变答案(你不能)。该问题明确表示“流式传输”,并且 XenApp 确实具有单独的流式传输功能(但它不经常使用)。如果您的客户端正在使用应用程序流,那么应用程序将被物理下载到终端并在沙箱中本地执行。 IE。它不在 XenApp 服务器上运行。
【解决方案2】:

我个人对 Citrix XenApp 并不熟悉,但从这里获取 http://www.citrix.com/products/xenapp/how-it-works/application-virtualization.html 是 Citrix XenApp 的工作方式。

了解应用程序虚拟化 Citrix 应用程序虚拟化技术将应用程序与底层操作系统和其他应用程序隔离开来,以提高兼容性和可管理性。作为现代应用程序交付解决方案,XenApp 通过集成的应用程序流和隔离技术对应用程序进行虚拟化。这种应用程序虚拟化技术使应用程序能够从一个集中位置流式传输到目标设备上的隔离环境中,并在其中执行。使用 XenApp,无需安装传统意义上的应用程序。应用程序文件、配置和设置被复制到目标设备,运行时的应用程序执行由应用程序虚拟化层控制。 在执行时,应用程序运行时认为它直接与操作系统交互,而事实上,它正在与代理所有对操作系统的请求的虚拟化环境交互。 XenApp 的独特之处在于它是一个完整的虚拟应用程序交付系统,通过将应用程序托管和应用程序流直接传输到用户设备,提供在线和离线应用程序访问。当用户请求应用程序时,XenApp 会确定他们的设备是否兼容并能够运行相关应用程序。目标设备的最低要求是兼容的 Windows® 操作系统和适当的 Citrix 客户端软件。如果用户设备满足最低要求,则 XenApp 通过应用程序流直接启动应用程序虚拟化到用户设备上的隔离环境中。如果用户设备无法运行特定应用程序,XenApp 会启动会话虚拟化。

防止缓存在您的 htaccess 文件中。

Header set Cache-Control "private, max-age=0, no-cache, no-store, must-revalidate" env=NO_CACHE

如果您想阻止缓存某些文件类型,请尝试以下示例:

  <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
    Header set Cache-Control "private, max-age=0, no-cache, no-store, must-revalidate" env=NO_CACHE
    </FilesMatch>

【讨论】:

【解决方案3】:

【讨论】:

    【解决方案4】:

    您可以使用它们的 IP 地址检测它们。 如果他们使用 XenApp,他们的 IP 将与本地局域网不同。

    【讨论】:

    • 我不确定。如果整个 LAN 具有相同的单个 API 地址,则该 LAN 内的 XenApp 服务器将具有相同的 IP 地址。无论他们如何连接,我们总是从他们那里获得相同的 IP 地址,它是一栋具有唯一 IP 地址的医院大楼。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2015-04-16
    • 1970-01-01
    • 2011-03-26
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多