【问题标题】:Security - Ajax & Nonce use安全性 - Ajax 和 Nonce 使用
【发布时间】:2012-12-12 17:56:36
【问题描述】:

我正在开发一个网站,该网站发布了一些从 jquery 到 PHP 的 ajax 调用,并将数据从 PhP 返回到 jquery。

一切正常,但我想知道我处理电话的方法是否正常,关于安全性,以及我是否可以采取或记住任何进一步的安全措施。

运行我的流程;

functions.php 文件

  1. 设置 wp_localize_script() 并将 ajax url 和 nonce 的变量传递给它 -

     wp_localize_script( 'main', 'WP', array( 
         'AJAX_URL' => admin_url( 'admin-ajax.php'), 
         'NONCE' => wp_create_nonce( 'ajax_custom_nonce' ) 
     )); 
    

myscript.js 文件

  1. 在我的 js 文件中,我使用 jquery 发送了我的帖子请求;

    $.ajax({
        type : "post",
        url: WP.AJAX_URL,
        data: ({action : 'request_handler', 
            id : 'content_id',   
            nonce : WP.NONCE }),
        success: function(data) {}
    })
    

ajax.php 文件

  1. ajax.php文件接收ajax post,调用request_handler();

    add_action("wp_ajax_nopriv_request_handler", "request_handler");
    add_action("wp_ajax_request_handler", "request_handler");
    
  2. request_handler() 检查 nonce,获取 post id 并运行 switch 语句来调用所需的函数。

     function request_handler() { 
         // check the nonce
         $nonce = $_POST['nonce'];
    
         if ( ! wp_verify_nonce( $nonce, 'ajax_custom_nonce' ) ) 
             die ('busted');
    
        $id = $_POST['id']; 
    
        switch ($id) {
            case 'vimeo_embed':
                require_once(TEMPLATEPATH . '/library/vimeo.php'); 
                load_vimeo();  
            break; 
            case 'popup':  
                require_once(TEMPLATEPATH . '/library/popup.php'); 
                load_popup();
            break;
    
            ....etc
        }
     } 
    

谢谢

【问题讨论】:

    标签: php wordpress security jquery


    【解决方案1】:

    代码看起来不错,我想唯一需要注意的是您如何处理 $id 的意外值,我猜默认值在该开关中可以正常工作。

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2011-12-04
      • 2010-12-28
      • 2023-03-11
      • 1970-01-01
      • 2012-12-16
      • 2012-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多