【问题标题】:secure a php file that contains ajax functions called by jQuery?保护包含由 jQuery 调用的 ajax 函数的 php 文件?
【发布时间】:2013-07-18 13:52:08
【问题描述】:

我有一个包含 ajax 函数的 php 文件。
这个文件不需要认证,它放在文件夹里

('config/ajax.php')

我需要保护它,禁止查询函数返回的所有数据。

有没有简单的方法可以做到这一点?

【问题讨论】:

  • 所有可以从 AJAX 调用的东西都是公开的,你不能阻止任何人调用它。您能否提供有关您要实现的目标的更多详细信息(最好使用一些示例代码)。
  • 如果您希望人们能够使用调用这些 ajax 函数的页面,但又不希望人们看到 ajax 函数返回的所有数据,那么您需要重新考虑您的架构.
  • 除非您使用身份验证来区分攻击者和合法用户,否则您不能在不让客户端查询您的数据的情况下让客户端查询您的数据。

标签: php ajax security authentication


【解决方案1】:

编写一个不返回所有数据的查询?

您有可以提供的代码示例吗?您是否将其包含在 php 文件中?

理想情况下,您将向您正在调用的ajax函数传递一个参数,如果没有传递任何参数,它将不会返回任何数据。不返回所有数据。

请发布您的示例,以便我们提供更多帮助。

【讨论】:

  • ajax.php 文件与其他文件(如 config.php、db.php....执行,exp :
【解决方案2】:

您可以对 ajax 请求进行一些验证,就像 Okmer 所说的所有 ajax 都将是公开的。

但是您可以传递一些参数来保证您的应用程序调用了 ajax...

喜欢

ajax.php?auth=2134

$auth = $_POST['auth'];
if($auth == 'somecode')
//ok can response.

【讨论】:

  • 然后攻击者可以传递相同的参数。
  • 所以你应该想办法让这个参数唯一并且只有在生成我的应用程序@SLaks时才有效
  • 如果攻击者有正确的信息,他可以攻击世界上所有的系统。这是主要的安全问题,为您节省系统的重要方面以防止攻击。
  • 但是攻击者可以从你的应用中读取参数的值。你需要一个共享的秘密。
  • 但是如果每种情况都生成一个参数,您可以这样做。像,servertime ddmmyyyy+userid+某种唯一键,每次更改都可以。可以毫无问题地完成。
【解决方案3】:

除非您将实际查询传递给 .php 文件而不是像 id 等参数,否则它们以不同方式访问相同结果有什么问题?

【讨论】:

    【解决方案4】:

    我今天遇到了同样的问题,我正在做的是,我自己做了一个加密字符串的函数,然后我在 ajax 页面上解密以取回值,我曾经像这样匹配它们。

    class MyEncryption
    {
    
    public $pubkey  = 789584875986;
    private $privkey = 878458785986;
    
    public function encrypt($key)
      {
       $encript = $key+$this->privkey;
       return $key = 7*$encript;
    
      }
    
    public function decrypt($key)
      {
        $d = $key/7;
        return $descript = $d-$this->privkey;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-30
      • 2011-05-04
      • 2011-03-31
      • 2013-01-24
      • 1970-01-01
      • 2020-08-10
      • 1970-01-01
      • 2014-12-21
      相关资源
      最近更新 更多