php - 如何检测站点访问者是否通过 Citrix XenApp 浏览站点?

标签 php google-chrome http citrix xenapp

我们的客户有一个带有接收终端的小型 LAN,他们通过 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, like Gecko) Chrome/39.0.2171.99 Safari/537.36

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

有没有办法确定这一点,即使是理论上的?

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

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

最佳答案

简短的回答:你真的不能.. XenApp,就所有意图和目的而言,都是远程桌面。事实上,Microsoft RDP 和 Citrix 曾一度使用相同的代码库来回许可。

更长的答案:当您通过 XenApp 启动 Chrome 时,Chrome 实际上是在服务器上启动的。然后,显示会被捕获、重定向并通过 ICA 流式传输到客户端。一般而言,您无法通过 header 或 HTTP 流量判断用户是否正在运行 XenApp 的原因是,从 Chrome<->Web 服务器(或任何应用程序)的角度来看,没有任何真正的改变。唯一的差异在于 UI 的渲染位置。

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

关于php - 如何检测站点访问者是否通过 Citrix XenApp 浏览站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28102330/

相关文章:

php - 我如何从 xml 中获取第一个子元素?

javascript - 为什么我的 XMLHttpRequest 收到 robots.txt 响应

android - LoopJ AndroidAsyncHttp 和 JSON POST 数组

c++ - 将用户名和密码发送到 Web 服务器的 HTTP 命令是什么?

php - Mysql的结果有限制吗?

php - 使用简单的 html dom 获取 url-data 属性

php - 尝试插入时出现 SQL 语法错误

google-chrome - 自定义 chrome 开发者工具 javascript 调试器键盘快捷键?

javascript - 为什么 Google Chrome 控制台在输入时抛出 "SyntaxError: Unexpected token }"(

ruby-on-rails - 如何查看通过 Rails 应用程序发送的 HTTP 请求?