Php 将web api限制到web服务器

Php 将web api限制到web服务器,php,javascript,ajax,database,json,Php,Javascript,Ajax,Database,Json,目前,当我想通过ajax从数据库中获取数据时,我使用一个外部php文件,该文件使用mysqli从数据库中获取数据,并回显结果,然后将数据发送到ajax 我现在想把它变成一个更有效的解决方案。我想我应该首先修改它,以便php文件为将来的项目输出json数据,并简化数据管理。但我不希望其他人能够直接访问这些数据,而不是通过我的网站。由于您可以通过查看网站来查看ajax连接,因此很容易找到 我不希望它成为一个每个人都可以访问原始json数据并从中构建自己的应用程序/网站的地方 还有什么其他的解决方案?

目前,当我想通过ajax从数据库中获取数据时,我使用一个外部php文件,该文件使用mysqli从数据库中获取数据,并回显结果,然后将数据发送到ajax

我现在想把它变成一个更有效的解决方案。我想我应该首先修改它,以便php文件为将来的项目输出json数据,并简化数据管理。但我不希望其他人能够直接访问这些数据,而不是通过我的网站。由于您可以通过查看网站来查看ajax连接,因此很容易找到

我不希望它成为一个每个人都可以访问原始json数据并从中构建自己的应用程序/网站的地方

还有什么其他的解决方案?只有我的web服务器才能访问它

  • 当用户访问您的站点时建立会话
  • 在回答任何AJAX调用之前检查会话

  • 注意,这并不是一个很好的证明,但只是一个起点。

    对于允许使用请求json的文档的用户,无法隐藏json数据。换句话说:如果数据以允许的方式(使用您的站点正常方式)到达浏览器,您不能真正拒绝对数据的检查。然而,你可以使吸血困难。如果你让这个过程比建立一个自制数据库所需的时间更长,那么你就赢了

  • 减少在一个请求中发送的数据量:发送的数据不要超过实际显示的数据量
  • 将数据拆分为分页列表和详细视图。因此,为了访问完整的数据,leecher必须发出大量请求。然后,您可以限制通话/时段/用户(使用会话)
  • 如果项目允许,确定用户。有许多方法可以减少不需要的注册。此外,您可以使数据访问限制(如上)更有效(您可以将计数器连接到用户)
  • 您可以使用基于密钥的加密。您可以在这里找到一个可能的解决方案:显然,浏览器将解密数据,因此您需要向其发送密钥。这意味着:该过程将是可重复的,但是比简单的检查需要更多的时间。您可以改变加密的参数,使其更加困难
  • 您可以执行一些额外的步骤,使脚本化的吸血变得更加困难。但是,这些不会使浏览器检查更加困难:

  • 检查您从请求标题获得的推荐人。它应该与文档的url匹配
  • 如果X-Requested-Width标头未设置为“XMLHttpRequest”($\u服务器['HTTP\u X\u Requested\u WITH']=='XMLHttpRequest'),则不发送任何内容。这是安全的,所有浏览器都会根据ajax请求发送它
  • 您可以向ajax url添加一个唯一的一次性参数。您可以使用简单的“script”标记(var param='uniqparam123';)通过PHP传递参数(或整个url)。您将需要一个快速的解决方案来暂时存储发送的密钥一段时间。一旦ajax请求传入,您就可以匹配键,从列表中删除,然后发送数据
    希望您能挑选其中一些。

    这将如何阻止任何用户访问json结果?我只想让我的web服务器访问它。请将其设置为只有您的服务器具有会话。随机的人可以整天访问它,并且会被拒绝。我如何给服务器会话并用ajax调用“发送”它?