如何确保您的 PHP 脚本仅由您授权的应用程序调用?
How to be sure that your PHP script is called only by your authorized app?
假设我在名为 process.php 的服务器上有一个 PHP 脚本。我想从 iOS/Android 应用程序调用脚本。我想让没有应用程序就无法调用脚本,例如从计算机调用它。我怎样才能使这个验证过程安全且不可破解?
我想到的一些事情:
使用类似于密码的静态密钥来解锁脚本。这不是一个很好的方法,因为一旦您的密钥被破解(可能是逆向工程,密钥存储在您的应用程序中),他们就可以完全访问您的脚本。
创建哈希函数并按照以下步骤操作:
- 向服务器发起请求并获取一个字符串
- 在本地设备上散列字符串
- 发回哈希字符串
- 如果服务器收到的字符串与服务器期望的字符串相同(在服务器上散列的请求发送)我解锁脚本
这样,您只有拥有哈希函数才能获得访问权限。这足够安全吗?
如果没有用户的登录凭据,我还有哪些其他选择?
我会使用密码。
将加密的密码存储到SQL数据库中,然后在服务器发回请求之前,确保密码包含在请求中。如果您想确保密码永远不会以纯文本形式发送,您可以使用 HTTPS。
您的选项 2 有效,但是如果您担心安全性,那么我会使用 HTTPS。
如果您担心,可以创建一个 API 密钥并使用 HTTPS 并将其附加到 POST 请求中的 url。仅确认包含密钥的请求。
假设我在名为 process.php 的服务器上有一个 PHP 脚本。我想从 iOS/Android 应用程序调用脚本。我想让没有应用程序就无法调用脚本,例如从计算机调用它。我怎样才能使这个验证过程安全且不可破解?
我想到的一些事情:
使用类似于密码的静态密钥来解锁脚本。这不是一个很好的方法,因为一旦您的密钥被破解(可能是逆向工程,密钥存储在您的应用程序中),他们就可以完全访问您的脚本。
创建哈希函数并按照以下步骤操作:
- 向服务器发起请求并获取一个字符串
- 在本地设备上散列字符串
- 发回哈希字符串
- 如果服务器收到的字符串与服务器期望的字符串相同(在服务器上散列的请求发送)我解锁脚本 这样,您只有拥有哈希函数才能获得访问权限。这足够安全吗?
如果没有用户的登录凭据,我还有哪些其他选择?
我会使用密码。
将加密的密码存储到SQL数据库中,然后在服务器发回请求之前,确保密码包含在请求中。如果您想确保密码永远不会以纯文本形式发送,您可以使用 HTTPS。
您的选项 2 有效,但是如果您担心安全性,那么我会使用 HTTPS。
如果您担心,可以创建一个 API 密钥并使用 HTTPS 并将其附加到 POST 请求中的 url。仅确认包含密钥的请求。