وبگرانمقالاتآموزش وردپرسکد های وردپرسامنیت فرم های AJAX وردپرس با استفاده از nonce

امنیت فرم های AJAX وردپرس با استفاده از nonce

  • مدیر
  • 17 آوریل, 2020
  • 438 بازدید
امنیت فرم های AJAX وردپرس با استفاده از nonce

هنگام ساخت یک قالب یا پلاگین وردپرس معمولا از ajax برای افزایش قابلیت کاربری استفاده می شود و این درحالی است که برای امنیت ارسال اطلاعات و جلوگیری از حملات CSRF ، وردپرس استفاده از تابع و به طور کلی توابع nonce را به شما پیشنهاد می دهد تا از ارسال اطلاعات جعلی توسط هکر ها جلوگیری شود. در این مقاله به بررسی امنیت فرم های AJAX وردپرس با استفاده از nonce می پردازیم.

وردپرس نانس ( wordpress nonce ) چیست؟

با مراجعه به کدکس وردپرس می خوانیم که نانس ( nonce ) یک کد یک بار مصرف است که برای محافظت از فرم ها و url ها در برابر ارسال اطلاعات جعلی توسط هکر ها و کاربران ناشناس استفاده می شود. Nonce ها فقط برای Session کاربر فعلی معتبر هستند بنابراین هرگونه تلاش برای ارسال اطلاعات توسط اشخاص دیگر بی نتیجه خواهد بود.

ارسال فرم AJAX وردپرس با استفاده از nonce

در این قسمت می خواهیم با استفاده از یک مثال ساده طریقه ارسال فرم AJAX وردپرس با استفاده از nonce را آموزش دهیم:

1- ایجاد فرم html

ابتدا یک فرم ایجاد می کنیم به صورت زیر:

<form id="myform">
  <div class="form-group">
    <label for="formGroupExampleInput">Example label</label>
    <input type="text" class="form-control" id="formGroupExampleInput" placeholder="Example input">
  </div>
  <div class="form-group">
    <label for="formGroupExampleInput2">Another label</label>
    <input type="text" class="form-control" id="formGroupExampleInput2" placeholder="Another input">
  </div>

  <?php wp_nonce_field( 'my_nonce' ); ?>

  <input type="submit" id="submit" value="Submit" />

</form>

مهم ترین قسمت کد بالا تابع wp_nonce_field است که یک توکن ایجاد میکند و فیلد آن را نیز به صورت مخفی در کد های منبع شما نشان میدهد.

اگر به قسمت کد های فرم خود ( ctrl+f5 ) مراجعه کنید این فیلد مخفی ایجاد شده را چیزی شبیه به کد زیر میبینید:

<input type="hidden" id="_wpnonce" name="_wpnonce" value="ad8a767ba0" />
<input type="hidden" name="_wp_http_referer" value="/myaccount/mypage/" />

2- ارسال اطلاعات با استفاده از jquery

با استفاده از کد زیر و با استفاده از jquery یک درخواست ajax را به https://yoursite.com/ajax.php ارسال می کند.

<script>
jQuery( document ).ready(function() {
	jQuery( "#submit" ).click(function() {
		 jQuery.post( "https://yoursite.com/ajax.php", jQuery('#myform').serialize())
			.done(function( data ) {
			alert(data);
		}); 
		return false;
	});
});
</script>

3- تایید صحت فرم توسط PHP

در این قسمت باید اعتبار فرم ارسالی توسط php چک شود که یا می توانید یک فایل با نام ajax.php بسازید و کد های زیر را داخل آن قرار دهید.

<?php
define( 'WP_USE_THEMES', false );
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

if (!check_ajax_referer( 'my_nonce' )){
	wp_die();
}

خط 2 و 3 از توابع مورد نیاز هستند و حتما باید اضافه شود.
اما توسط تابع check_ajax_referer بررسی می شود که آیا توکنی که قبلا ایجاد شده و اسم آن my_nonce بود مطابقت دارد یا خیر اگر چنین چیزی نباشد توسط تابع wp_die برنامه همینجا متوقف خواهد شد.





6 دیدگاه برای این مطلب ثبت شده است

  • ممنون خیلی به کارم اومد

  • برای ساخت لایک به صورت ایجکسی هم خیلی میشه استفاده کرد از این قابلیت

    1. هم لایک و هم لود و بارگذاری

  • با سلام
    ای کاش اول ایجکس در وردپرس رو توضیح بدید

    1. حتما قرار خواهم داد

    2. بسیار عالی بود ممنونم

  • دیدگاه خود را بیان کنید :

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


    *
    *