安全性 - Ajax& Nonce使用

时间:2012-12-12 17:56:36

标签: php wordpress security jquery

我正在开发一个站点,它将从jquery发送到PHP的多个ajax调用发送到PHP并将数据从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' ) 
     )); 
    
  2. 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) {}
      })
      
    2. ajax.php文件

      1. ajax.php文件收到ajax帖子,调用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
            }
         } 
        
      3. 感谢

1 个答案:

答案 0 :(得分:3)

代码似乎很好,我想唯一要注意的是,你如何处理$ id的意外值,我想默认在这个开关中可以正常工作。