PhoneGap允许(Ajax请求)服务器端PHP文件只访问此应用程序(安全目的)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

我使用PhoneGap创建了一个Android应用程序(PhoneGap是一个支持您使用HTML,CSS和JavaScript等语言创建应用程序的工具)。

请注意,Android应用程序是一个开源应用程序。因此,Android应用程序代码可供服务器公开使用。所以我无法将密码,验证变量传递给服务器。

这是我的代码:

<script type="text/javascript">
    $(document).ready(function() {
        $("#insert").click(function() {
            var title = $("#title").val();
            var duration = $("#duration").val();
            var price = $("#price").val();
            var dataString = "title=" + title + "&duration=" + duration + "&price=" + price + "&insert=";
            if ($.trim(title).length > 0 & $.trim(duration).length > 0 & $.trim(price).length > 0) {
                $.ajax({
                    type: "POST",
                    url: "http://www.example.com/test/insert.php",
                    data: dataString,
                    crossDomain: true,
                    cache: false,
                    beforeSend: function() {
                        $("#insert").val('Connecting...');
                    },
                    success: function(data) {
                        if (data == "success") {
                            alert("inserted");
                            $("#insert").val('submit');
                        } else if (data == "error") {
                            alert("error");
                        }
                    }
                });
            }
            return false;
        });
    });
    </script>

此函数应更新服务器上使用的表http://www.example.com/test/insert.php。当应用程序安装在Android手机上时,它工作正常没有任何问题。

但其他用户可以使用上述功能轻松更新我的表。我的意思是,如果他们知道URL(http://www.example.com/test/insert.php),他们也可以通过必要的帖子请求更新我的表。

我该如何防止这种情况发生?我怎么能允许访问http://www.example.com/test/insert.php仅限于我的应用程序的页面。我的意思是如果请求来自我的应用程序http://www.example.com/test/insert.php它应该工作。

提问于
用户回答回答于
用户回答回答于

你只有两个我能想到的选择:

1-使用应用程序密钥,例如romal tandel的回答通知,你不必发布密钥,因为它不是代码的一部分,你可以简单地用已发布的副本中的虚拟密钥=“XXXXX”替换密钥代码和开源并不是推出此解决方案的借口。

-2应首先确定你的用户域并询问你应该访问服务器的人员,而不是谁应该访问服务器。只有在回答完这个问题之后,你才能找到一种方法来限制只能访问你的目标用户域,例如与组织或国家/地区相关的一系列IP地址,或者预先注册唯一设备MAC地址或唯一ID,或者很可能是毕竟会引导你使用第一个解决方案。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励