【问题标题】:Prevent users from browsing phpdesktop app outside executable?防止用户在可执行文件之外浏览 phpdesktop 应用程序?
【发布时间】:2014-07-15 20:20:08
【问题描述】:

我正在使用 php desktop 开发一个 php/html/js 桌面应用程序,当你运行你的应用程序时,php 桌面运行一个服务器并监听指定或随机端口,如 127.0.0.1:65543 ,如果用户在里面打开那个 url他/她的外部浏览器他/她可以在浏览器中访问应用程序,我需要一些技巧或提示,以便我的应用程序仅从 php 桌面二进制文件中的嵌入式浏览器加载

我可以检查用户代理,但它不安全,因为 php 桌面用户代理是

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57Safari/537.36

你知道任何技巧或者你有任何使用php桌面的经验吗,我非常感谢任何帮助

【问题讨论】:

  • 根据定义,您的应用程序已经在他们的计算机上“运行”了,那么如果他们通过“嵌入式”浏览器或成熟的“外部”浏览器访问它有什么区别?

标签: php phpdesktop


【解决方案1】:

该用户代理字符串非常具体,因此您可以安全地检查它。用户通常会在其系统上安装最新的 Google Chrome。

您也可以通过 command_line_switches 选项设置“user-agent”开关,用您自己的字符串覆盖该用户代理字符串:https://code.google.com/p/phpdesktop/wiki/ChromeSettings

您也可以通过 javascript 检查“phpdesktop”对象。此对象仅在 phpdesktop 嵌入式浏览器中可用,请参阅:https://code.google.com/p/phpdesktop/wiki/JavascriptApi

【讨论】:

    【解决方案2】:

    使用用户代理当然不是最好的解决方案,因为人们可以拥有他们想要的每个用户代理。但是,如果您没有安全问题,我会尝试在您的“php 桌面”环境中设置自定义用户代理,例如“MyCustomCallUserAgent”,并通过 PHP 检查代理字符串是否匹配。

    在阅读“php 桌面”环境的网站时,它似乎只不过是调用本地 php 服务器的 Chrome/IE 画布。因此,在这种情况下,从 Chrome 中调用脚本本身或从 chrome 画布调用脚本没有区别,因此您无法发现差异。唯一的机会是读取全局 $_SERVER 变量并检查是否有任何“唯一”可以识别调用客户端。但这并不比使用用户代理字符串更安全。

    你想试试TideSDK 作为替代方案。

    【讨论】:

      【解决方案3】:

      如果您真的不希望用户在可执行文件之外浏览 phpdesktop 应用程序,我建议使用 javaFx WebView。

      使用您当前的 php,您只需将其添加到 javafx WebView。这样做可以解决两个问题:

      1. 用户无法在可执行文件之外浏览您的应用程序。

      2. 用户无法轻易看到您的代码。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-17
        • 1970-01-01
        • 1970-01-01
        • 2014-10-12
        • 1970-01-01
        • 2011-01-04
        相关资源
        最近更新 更多