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


API AJAX over PHP - Create a secure access to API

我正在为我正在开发的web应用程序创建一个自定义电子商务模块。我们让用户有机会为他们的网站创建一个模块,该模块将与我们一起托管到一个域中,例如:http://example.com

该模块在用户的帐户管理面板中有一个Javascript接口。为了访问管理面板,他们必须使用自己的帐户登录我们的web应用程序。

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

当调用API URL时,我们考虑使用存储在PHP SESSION中的令牌,将令牌返回给AJAX调用,然后使用给定的令牌对请求的函数进行另一次AJAX调用。调用函数时,会比较两个标记,如果它们相同,则允许进行更改。否则,它们会被拒绝,但我们不知道这是否是一种"良好的安全性",可以防止从外部访问API。因为你可以"找到"知道你必须调用URL才能获得访问令牌的方法,然后用给定的令牌进行另一次调用并执行销毁。

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

谨致问候。

您可以尝试以下操作:

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

这是一种方法。