คำถามติดแท็ก nonce

2
wp_verify_nonce เทียบกับ check_admin_referer
ความแตกต่างคือสิ่งที่ฉันควรใช้ ฉันรู้ว่า wp_verify_nonce ตรวจสอบการ จำกัด เวลาและ check_admin_referer ฉันคิดว่าการโทร wp_verify_nonce เช่นเดียวกับการตรวจสอบเซ็กเมนต์ URL ของผู้ดูแลระบบ แต่ฉันสับสนนิดหน่อยที่ฉันควรใช้และเมื่อใด ขอบคุณสำหรับความชัดเจน
21 admin  security  nonce 

4
ฉันจำเป็นต้องมีเขตข้อมูลที่ไม่มีข้อมูลสำหรับทุกกล่องเมตาที่ฉันเพิ่มให้กับผู้ดูแลระบบประเภทโพสต์ที่กำหนดเองของฉันหรือไม่
ฉันกำลังทำงานในหน้าผู้ดูแลระบบของประเภทโพสต์ที่กำหนดเองของฉันและฉันก็ติดอยู่กับการตัดสินใจว่าจะเพิ่มเขตข้อมูลที่ไม่ใช่ช่องว่างอีกครั้งสำหรับ metabox ที่สองหรือไม่ ฉันใหม่มากสำหรับประเภทโพสต์ที่กำหนดเองและการค้นหาออนไลน์ไม่ได้ให้ผลลัพธ์ที่มากมายนัก ความคิดใด ๆ ขอบคุณ

1
การตรวจสอบ nonce ทำงานอย่างไร
ฉันเห็นว่า wp_nonce_field สร้างค่าในเขตข้อมูลที่ซ่อนอยู่ <input type="hidden" id="message-send" name="message-send" value="cabfd9e42d" /> แต่ wp_verify_nonce ไม่ได้ใช้ค่านั้นเท่าที่ฉันสามารถบอกได้ แต่ฉันอาจจะผิด ดูเหมือนว่าจะใช้โทเค็นเซสชันสำหรับการตรวจสอบ $expected = substr( wp_hash( $i . '|' . $action . '|' . $uid . '|' . $token, 'nonce'), -12, 10 ); if ( hash_equals( $expected, $nonce ) ) { return 1; } ถ้าเช่นนั้นจุดที่มีแอตทริบิวต์ค่าในเขตข้อมูลที่ซ่อนคืออะไร

2
ฉันสามารถใช้ nonce เดียวกันสำหรับคำร้องขอหลาย ๆ อันในหน้าเดียวกันได้หรือไม่?
หรือนี่เป็นการทำลายจุดประสงค์ของความชั่วซึ่งฉันยอมรับว่าฉันไม่เข้าใจ :) ตัวอย่างเช่นคำขอ ajax สองรายการที่เรียกใช้กับการโหลดหน้าเว็บหรือเมื่อมีการคลิกบางสิ่ง: $.ajax({ type: 'post', url: 'admin-ajax.php', data: { action: 'foo', _ajax_nonce: '<?php echo $nonce; ?>' } }); $.ajax({ type: 'post', url: 'admin-ajax.php', data: { action: 'foo2', _ajax_nonce: '<?php echo $nonce; ?>' } });
13 php  ajax  nonce 

2
Nonces ไร้ประโยชน์หรือไม่?
อาจเป็นคำถาม noob แต่ได้ยินฉันออก - ไม่ใช่จุดของการใช้ Nonce เพื่อป้องกันจากสิ่งต่าง ๆ เช่น scrappers (phpcurl scrappers ฯลฯ )? แต่ Nonce ของฉันพิมพ์ออกมาในหัวของเอกสารดังนี้: /* <![CDATA[ */ var nc_ajax_getpost = { ...stuff... getpostNonce: "8a3318a44c" }; /* ]]> */ ดังนั้นถ้าฉันสร้าง scrapper อย่างรวดเร็วฉันก็จะได้ค่า nonce จากหน้านั้นแล้วใช้มันใน POST ของฉัน ... ทำให้การออกกำลังกายทั้งหมดของการใช้ Nonce ไร้ประโยชน์ ... ฉันหายไปนี่อะไร
11 security  nonce 

2
วิธีรับ nonce ที่ไม่ซ้ำสำหรับคำขอ Ajax แต่ละรายการ
ฉันได้เห็นการถกเถียงกันสองสามครั้งเกี่ยวกับการทำให้ Wordpress สร้างความแปลกใหม่ให้กับอาแจ็กซ์ที่ร้องขอ แต่สำหรับชีวิตของฉันฉันไม่สามารถทำให้ Wordpress ทำมันได้ - ทุกครั้งที่ฉันขอสิ่งที่ฉันคิดว่าควรจะเป็นใหม่ ไม่ใช่ฉันได้รับ nonce เดียวกันกลับมาจาก Wordpress ฉันเข้าใจแนวคิดของ nonce_life ของ WP และแม้กระทั่งตั้งค่าเป็นอย่างอื่น แต่นั่นก็ไม่ได้ช่วยฉัน ฉันไม่ได้สร้าง nonce ในวัตถุ JS ในส่วนหัวผ่านการแปลเป็นภาษาท้องถิ่น - ฉันทำในหน้าแสดงผลของฉัน ฉันสามารถทำให้เพจของฉันประมวลผลคำขอ Ajax ได้ แต่เมื่อฉันร้องขอ nonce ใหม่จาก WP ในการติดต่อกลับฉันได้รับ nonce เดียวกันกลับมาและฉันไม่รู้ว่าฉันทำอะไรผิด ... ในที่สุดฉันต้องการ ขยายสิ่งนี้เพื่อให้สามารถมีหลายรายการในหน้าแต่ละรายการมีความสามารถในการเพิ่ม / ลบ - ดังนั้นฉันต้องการโซลูชันที่จะอนุญาตคำขอ Ajax ที่ตามมาหลายรายการจากหน้าเดียว (และฉันควรจะบอกว่าฉันได้ใส่ฟังก์ชั่นทั้งหมดนี้ลงในปลั๊กอินดังนั้น "หน้าจอแสดงผล" ส่วนหน้าจึงเป็นฟังก์ชั่นที่มาพร้อมกับปลั๊กอิน ... ) function.php: …
11 ajax  nonce 

3
Nonce ที่ดึงมาจาก REST API นั้นไม่ถูกต้องและแตกต่างจาก nonce ที่สร้างใน wp_localize_script
สำหรับผู้ที่เดินทางมาจาก Google: คุณอาจจะไม่ควรจะได้รับขณะปัจจุบันจากส่วนที่เหลือของ APIเว้นแต่คุณจริงๆจะรู้ว่าสิ่งที่คุณทำ รับรองความถูกต้องของคุกกี้ที่ใช้กับ REST API เป็นเพียงความหมายสำหรับปลั๊กอินและธีม สำหรับการใช้งานหน้าเดียวคุณอาจจะใช้OAuth คำถามนี้มีอยู่เนื่องจากเอกสารไม่ได้ / ไม่ชัดเจนว่าคุณควรรับรองความถูกต้องจริงอย่างไรเมื่อสร้างแอปพลิเคชันหน้าเดียว JWT ไม่เหมาะสำหรับเว็บแอปและ OAuth นั้นยากที่จะใช้งานมากกว่าการรับรองความถูกต้องตามคุกกี้ หนังสือคู่มือมีตัวอย่างเกี่ยวกับวิธีที่ไคลเอ็นต์ Backbone JavaScript จัดการค่าคงที่และหากฉันทำตามตัวอย่างฉันจะได้รับ nonce ที่ปลายทางที่มีอยู่แล้วภายในเช่น / wp / v2 / posts ยอมรับ \wp_localize_script("client-js", "theme", [ 'nonce' => wp_create_nonce('wp_rest'), 'user' => get_current_user_id(), ]); อย่างไรก็ตามการใช้ Backbone ไม่เป็นปัญหาและมีธีมดังนั้นฉันจึงเขียนปลั๊กอินต่อไปนี้: <?php /* Plugin Name: Nonce Endpoint */ add_action('rest_api_init', …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.