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

时间:2016-04-13 15:35:19

标签: javascript php ajax api

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

该模块在用户的帐户管理面板中有一个Javascript界面​​。要访问管理面板,他们必须使用他们的帐户登录我们的Web应用程序。

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

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

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

问候。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

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

这是一种做法。