【问题标题】:PHP access control from Android, iOS and Windowsphone来自 Android、iOS 和 Windowsphone 的 PHP 访问控制
【发布时间】:2015-04-02 14:00:28
【问题描述】:

我正在为 Android、Windows 和 iO 创建一个 phonegap 应用程序。 该应用程序将使用 Post 和 Get 请求从 php 服务器发布和访问数据。问题是由于跨域请求限制,我必须允许使用 * 进行访问控制。

<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Max-Age: 2000');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
?>

我知道这是一个高安全漏洞。我想知道如何将访问控制限制在 android、windows phone 和 ios 以提高安全级别。 如果有人可以帮助我,我将非常高兴。谢谢

【问题讨论】:

    标签: javascript php android ios cordova


    【解决方案1】:

    您需要检查 PHP 中的用户代理。每个设备都有自己的用户代理,您可以与之进行比较。

    知道有可能欺骗用户代理,因为它也是一个 HTTP 标头。对您来说最好的办法是自己实施某种访问控制,而不依赖于它来自哪个设备。

    【讨论】:

    • “自己实现某种访问控制” 任何关于此的示例代码或可能是有关如何实现它的某种链接?谢谢
    • 这取决于你想做什么。您可以使用 OAuth 使用某种令牌身份验证,或编写您自己的自定义身份验证。这真的取决于你。没有千篇一律的方法可以做到这一点。
    【解决方案2】:

    为什么不使用Hashing 方法而不是Cross Origin?使用SHA-256

    每次您的 API 触发一些请求时,都包含哈希。

    javascript 示例。

    <script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha256.js"></script>
    <script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/enc-base64-min.js"></script>
    
    <script>
      var hash = CryptoJS.HmacSHA256("Message", "secret");
      var hashInBase64 = CryptoJS.enc.Base64.stringify(hash);
      document.write(hashInBase64);
    </script>
    

    参考:http://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/#js

    【讨论】:

    • 谢谢。但问题是由于跨域限制,服务器不允许访问。
    猜你喜欢
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    相关资源
    最近更新 更多