2012-12-12 2 views
2

jquery에서 PHP로 여러 ajax 호출을 게시하고 PhP에서 jquery로 데이터를 반환하는 사이트를 개발 중입니다.보안 - Ajax 및 Nonce 사용

모든 것이 효과적이지만, 통화 처리에 대한 나의 접근 방식이 보안과 관련되어 있는지, 그리고 더 많은 보안 조치가 취할 수 있는지 또는 염두에 두어야 하는지를 알고 싶습니다.

내 프로세스를 실행하려면;

functions.php 파일

  1. 설정 wp_localize_script() &가 아약스 URL과 넌스에 대한 변수 전달 -

    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 파일이 request_handler()를 호출;

    add_action("wp_ajax_nopriv_request_handler", "request_handler"); 
    add_action("wp_ajax_request_handler", "request_handler"); 
    
  2. request_handler() 검사 넌스은 & 실행이 필요한 함수를 호출하는 문을 전환 후 ID를 가져옵니다.

    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

코드는 좋은 것, 내가가 볼 수있는 유일한 것 같아요, 당신은 $ 아이디의 예상치 못한 값을 처리하는 방법이다, 나는 디폴트가 스위치에서 잘 작동 것 같아요.