Php 如何检测站点访问者是否正在通过Citrix XenApp浏览站点?

Php 如何检测站点访问者是否正在通过Citrix XenApp浏览站点?,php,google-chrome,http,citrix,xenapp,Php,Google Chrome,Http,Citrix,Xenapp,我们的客户有一个带有接收终端的小型局域网,通过Citrix XenApp在该局域网中传输Chromeweb浏览器。为什么?我不知道。这很奇怪,但这种串联似乎破坏了他们在我们网站表单上提交的数据。一些物理上无法缓存的东西-在这个XenApp东西的某个地方缓存 这对我们来说是一个非常重要的错误,因为我们管理支付处理,并且它正在兑现敏感的持卡人数据,这是非常不兼容PCI DDS的 我们已经告诉他们在终端机器上安装普通的Chrome浏览器,他们说他们已经安装了。但第二天,同样的事情发生了。然后他们说-“

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

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

我们已经告诉他们在终端机器上安装普通的Chrome浏览器,他们说他们已经安装了。但第二天,同样的事情发生了。然后他们说-“噢,这是一台带有
Citrix XenApp
的旧机器,又一次“嗯!现在也许一周过去了,我们又遇到了同样的问题,但他们声称他们不再使用
XenApp
,这是一款普通的本地Chrome

我不相信他们。但我们怎样才能证明他们错了呢

TL;DR:是否可以检测到:

  • 网站访问者使用普通的本地Chrome浏览器或
  • 通过
    Citrix XenApp
    的Chrome浏览器访问
  • 下面是一个
    USER\u AGENT
    示例,我们得到:

    Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,类似 壁虎)铬/39.0.2171.99狩猎/537.36

    它看起来像一个完全正常的铬建造。尝试查看HTTP头,但没有什么特别之处

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

  • 我们的应用程序堆栈是
    LAMP
    ,因此是PHP标记
  • 请不要认为这是我们的软件缺陷。我们有数百个客户端,数百万个事务,这种情况只会发生在这个
    Citrix XenApp
    crazy客户端上

  • 编辑:这不是重复的!这里我要说的是一个在浏览器中运行的网站,以及服务器端脚本。不是关于带有API和DLL的windows应用程序的简短回答:你真的不能。。无论出于何种目的,XenApp都是远程桌面。事实上,微软RDP和Citrix在某一点上是前后授权的同一代码库

    更详细的回答:当你通过XenApp启动Chrome时,Chrome实际上是在服务器上启动的。然后通过ICA捕获、重定向显示并流式传输到客户端。一般来说,无法通过头文件或HTTP流量判断用户是否正在运行XenApp的原因是,从ChromeWebserver(或任何应用程序)的角度来看,没有什么真正的变化。唯一的增量是UI呈现的位置


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

    您可以使用它们的IP地址检测它们。
    如果他们将使用XenApp,他们的IP将不同于本地lan。

    我个人不熟悉Citrix XenApp,但这是Citrix XenApp的工作方式

    了解应用程序虚拟化 Citrix application virtualization技术将应用程序与底层操作系统和其他应用程序隔离开来,以提高兼容性和可管理性。作为一种现代应用程序交付解决方案,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>
    
    
    标题集缓存控制“私有,最大年龄=0,无缓存,无存储,必须重新验证”env=无缓存
    
    检查Citrix特定的HTTP头:

    • X-Citrix-Gateway
    • X-Citrix-Via
    和代理标头:

    • X-Forwarded-For
    和Citrix特定cookies:

    • WIUser=
    • WINGDevice=
    • WINGSession=
    • WIClientInfo=
    和Citrix特定的SSL错误:

    • SSL错误61
    • SSL错误75
    • SSL错误74
    参考资料