API AJAX 在 PHP - 创建对 API 的安全访问

API AJAX over PHP - Create a secure access to API

我正在为我正在处理的 Web 应用程序创建自定义电子商务模块。我们为我们的用户提供了为他们的网站创建模块的机会,该模块将由我们托管到域中,例如:http://example.com.

该模块有一个进入用户帐户管理面板的 Javascript 界面。为了访问管理面板,他们必须使用他们的帐户登录我们的网络应用程序。

他们可以添加产品、更改电子商务设置(例如货币)等。当添加产品或修改某些内容时,需要 URL 进入用户域,调度员会调用PHP 功能(添加产品、删除产品等)并修改他们的数据库,但如果有人知道处理的 URLs,可以使用 REST API 客户端发送信息,这应该是工作(例如,将产品 ID 发送到删除产品操作)。我们希望防止这种情况发生,因为有人可能会删除客户的产品或修改某些电子商务设置。

我们考虑过在调用 API URL 时使用存储在 PHP SESSION 中的令牌,return 令牌到 AJAX 调用,然后使用给定的令牌对请求的函数进行另一个 AJAX 调用。调用该函数时,比较两个标记,如果它们相同,则允许更改。否则,它们将被拒绝,但我们不知道这是不是 "good security" 以防止从外部访问 API。因为您可以 "find" 知道必须调用 URL 来获取访问令牌,然后使用给定令牌进行另一个调用并执行销毁。

提前致谢。任何信息或建议将不胜感激。

此致。

您可以尝试以下方法:

  • 用户必须登录才能操作数据库(例如add/remove条记录)。
  • 当所述用户登录时,在会话变量$_SESSION['token'] = md5( time() ); // for example
  • 中存储一个令牌(随机值)
  • 然后添加一个hidden表单输入(<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">)与处理数据库操作的表单一起处理。
  • 添加一个条件,其中 $_SESSION['token'] == $_POST['token'] 必须满足才能使所需的操作成功。但是,当然,首先要确保检查 $_SESSION['token'] 是否存在。如果没有,则他们正在从外部访问您的系统。

这是一种方法。