🚨میدونی که Nonce وردپرس «رمز یکبارمصرف» نیست!خیلیها فکر میکنن وقتی اینو مینویسن:wp_nonce_field…
انتشار: 2026/08/13 16:50 UTCدریافت: 2026/08/15 03:30 UTCآخرین مشاهده: 2026/08/15 03:30 UTC
🚨میدونی که Nonce وردپرس «رمز یکبارمصرف» نیست!خیلیها فکر میکنن وقتی اینو مینویسن:wp_nonce_field( 'delete_product', 'my_nonce' );دیگه عملیاتش کاملاً امن شده.❌اما کاملا اشتباه!Nonce در وردپرس احراز هویت نیست و بهتنهایی مجوز انجام عملیات نمیده.پس Nonce دقیقاً چیکار میکنه؟Nonce عمدتاً برای مقابله با CSRF استفاده میشه.یعنی کمک میکنه بفهمیم:این درخواست احتمالاً از همان سایت و جریان مورد انتظار ارسال شده؟اما این به معنی این نیست که:این کاربر اجازه انجام این عملیات را دارد.❌ در مثال زیر یک کد ناقص رو میبینیم :if ( wp_verify_nonce( $_POST['my_nonce'], 'delete_product') ) { wp_delete_post( $product_id );}اینجا فقط Nonce بررسی شده.اما Capability کاربر بررسی نشده!✅ روش حرفهای که در مثال زیر یک تکه کد کامل و اصولی رو میبینیم :if ( ! current_user_can( 'delete_post', $product_id ) ) { wp_die( 'Access denied' );}if ( ! wp_verify_nonce( $_POST['my_nonce'] ?? '', 'delete_product') ) { wp_die( 'Invalid request' );}wp_delete_post( $product_id );اینجا دو موضوع جدا بررسی میشن:Nonce → آیا درخواست معتبر/مورد انتظار است؟Capability → آیا این کاربر اجازه انجام این کار را دارد؟🤯 و یک نکته خفنتر که باید بدونید !اسمش Nonce هست، اما در وردپرس الزاماً یکبارمصرف نیست!Nonceهای وردپرس معمولاً در یک بازه زمانی قابل استفاده مجدد هستند و عمر پیشفرضشان حدود ۱۲ تا ۲۴ ساعت است؛ بنابراین نباید آن را با OTP یا Token یکبارمصرف اشتباه گرفت.💎 قانون حرفهای وردپرس که توسعه دهنده ها باید بدونن :Nonce = محافظت در برابر CSRFCapability = کنترل دسترسیAuthentication = شناسایی کاربراین سه تا را با هم قاطی نکن. 🔥بیشتر بدون 👇👇👇@wpheart

