我该如何防止在MySQL数据库上运行查询并以JSON形式输出的PHP web服务脚本的热链接?

我该如何防止在MySQL数据库上运行查询并以JSON形式输出的PHP web服务脚本的热链接?,php,android,json,web-services,Php,Android,Json,Web Services,介绍和背景 我有一个彩票结果的MySQL数据库,我的Android应用程序通过连接到数据库的PHP web服务脚本进行查询以获得结果,查询前10名,并返回JSON数据供Android客户端解析和显示 我托管了服务器,它使用Cpannel(找不到版本号) 在Android应用程序(java程序)中,php脚本的完整URL存储在一个字符串中。我担心如果程序被反编译,他们可能会访问这个字符串。我使用pro-guard来混淆代码,但这并不隐藏给定给字符串或变量的实际值 实际问题 我如何防止其他人(如果他

介绍和背景

我有一个彩票结果的MySQL数据库,我的Android应用程序通过连接到数据库的PHP web服务脚本进行查询以获得结果,查询前10名,并返回JSON数据供Android客户端解析和显示

我托管了服务器,它使用Cpannel(找不到版本号)

在Android应用程序(java程序)中,php脚本的完整URL存储在一个字符串中。我担心如果程序被反编译,他们可能会访问这个字符串。我使用pro-guard来混淆代码,但这并不隐藏给定给字符串或变量的实际值

实际问题

我如何防止其他人(如果他们获得了PHP脚本位置的实际URL)仅仅通过运行脚本(这将消耗我的带宽使用)来防止他们从我提供的结果中吸取信息。我对它进行了测试,如果输入脚本的完整URL,我实际上可以得到JSON数据输出

我到目前为止所做的事情

我是这个服务器托管和管理的新手。到目前为止,我禁用了包含PHP脚本的目录上的索引,以防有人以这种方式找到它们

我曾试图为脚本文件设置权限,但最终实际上阻止了它的合法使用。目前他们是644人。我记不起我试过哪些了

我找到了各种热链接教程,但它们似乎是针对图像和多媒体的,而不是专门用于输出JSON数据的脚本。请帮帮我

我在寻找什么

我没有任何代码可以显示,但我正在为那些经历过相同问题的人寻求建议,并为我指出一个方向,我可以从中研究、调查和构建解决方案


感谢您花时间阅读

一个快速但非超级安全的解决方案是为每个请求生成一个唯一的令牌:

鉴于: 密钥:examplekey1234

客户: 计算令牌:sha256(例如Key+requestdata+date+ip….) 不使用令牌作为附加请求数据进行请求

服务器: 以与客户端相同的方式计算令牌。 将计算结果与提交的令牌进行比较。 如果两者相等,则接受请求

由于密钥只有客户端和服务器知道,因此没有人能够计算令牌。 添加到计算中的数据(requestdate、ip、date)确保令牌不能被其他请求重用(不同的reqest数据、其他用户、稍后的时间等)

如果您有某种会话id,还可以将其添加到令牌计算中。这使得令牌更加安全,因为它仅可用于此会话


但是:当有人反编译您的应用程序时,他可以获得密钥。此方法主要防止嗅探网络流量以获取url。

我非常喜欢这个想法,谢谢。我将尝试从中构建一个解决方案,并让您知道。