来自Android,iOS和Windowsphone的PHP访问控制

时间:2015-04-02 14:00:28

标签: javascript php android ios cordova

我正在为Android,Windows和iOs创建一个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以提高安全级别。 如果有人能帮助我,我将非常高兴。感谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

为什么不使用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