【问题标题】:Identifying a device accessing an html page识别访问 html 页面的设备
【发布时间】:2012-03-21 07:07:14
【问题描述】:

目标: 限制访问我的 HTML5(.html) webapp 的授权设备。

这是两难境地: 我有一个 HTML5 脱机应用程序(.html),它将从 Web 可访问的 URL 加载其所有资源。我想限制对指定设备的访问。

问题:

  • 识别设备。由于 .html 页面无法检索 mac 设备的地址,如果用户可以指定mac地址 它很容易被伪造。
  • 因为所有设备都是相同的(iPad)。 User-Agent 不允许我唯一地识别设备,而且它总是会被伪造。

有没有办法通过 Webkit/Safari 中无法轻易伪造的唯一值来识别设备? Mac 地址将是获得的理想值,但由于这是不可能的,我正在寻找任何其他有助于唯一识别设备的想法。

理想情况下,设备会加载 webapp,webapp 会向 CMS 发出 ajax 请求以验证设备的唯一标识符并返回结果。

感谢任何想法或想法。谢谢!

【问题讨论】:

  • 我只是在想一种可能性是越狱设备,然后使用/编写本机应用程序来修改 safari 的用户代理以包含设备的 macaddress,然后在加载时发送该值进行验证,但是我怀疑客户会想要越狱他们的所有设备......

标签: security html web-applications


【解决方案1】:

您最好的解决方案是在您的客户端平板电脑和服务器之间部署相互验证的 SSL。您可以在此处使用自签名证书,因此您无需从 CA 购买任何证书。这将确保您的服务器仅接受来自具有客户端证书的平板电脑的请求(将您的服务器配置为仅接受部署在平板电脑上的自签名客户端证书以进行客户端身份验证)。

【讨论】:

    【解决方案2】:

    这必须在服务器端完成。 Web 客户端(浏览器)向服务器发送请求及其详细信息。现在你可以用 javascipt 来实现了

    var browser = navigator.appName;
    if (browser == "bad") window.location = "http://example.com";
    

    但设备必须加载并执行代码。

    最好的方法是使用 PHP

    $browser = $_SERVER['HTTP_USER_AGENT'];
    if ($browser == "bad") header ("Location: http://example.com");
    

    但无论哪种方式,由于您在请求中提供了信息,因此总是有可能提供虚假详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多