2

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 ポストを受け取り、request_handler() を呼び出します。

    add_action("wp_ajax_nopriv_request_handler", "request_handler");
    add_action("wp_ajax_request_handler", "request_handler");
    
  2. request_handler() は nonce をチェックし、投稿 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
        }
     } 
    

ありがとう

4

1 に答える 1

3

コードは問題ないようです。注目すべき唯一のことは、$id の予期しない値をどのように処理するかです。そのスイッチではデフォルトで問題なく動作すると思います。

于 2012-12-12T18:00:51.503 に答える