رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش جلوگیری از اجرای اسکریپت از طریق آدرس در پی اچ پی
#1
 [ آموزش جلوگیری از اجرای اسکریپت از طریق آدرس در پی اچ پی ]

توضیح کد:
فرض کنید اسکریپتی نوشتید که یک سری کارایی رو خودش میکنه مثلا از طریق کرون جاب کارایی که تعریف کردید رو میکنه و اصلا قرار نیست کسی بیاد توی سایت و درخواست انجام کاری رو بده! خود اسکریپت (سیستم عاملتون در واقع) باید فقط کار رو انجام بده.
خب پس باید طوری باشه که هکر یا هر کسی اگر url اسکریپت شما رو داشت نتونه توی مرورگرش بزنه و کارا دوباره انجام بشه بنا به درخواست اون فرد، بلکه فقط خود سیستم قابلیت اجرای اسکریپت رو باید داشته باشه.
واسه جلوگیری از این کار راه های زیادی هستش، من دو کد زیر رو واستون گذاشتم که میتونید از هر کدوم که خواستید استفاده کنید، این کدها رو باید اول اسکریپتتون بذارید و کارش اینه که چک میکنه آیا سیستمی داره این فایل درخواست میشه یا فردی داره اونو از طریق مرورگر درخواست میکنه و اگر سیستمی نبود همون اول کار، اسکریپت exit میشه و دیگه بقیه کار ادامه پیدا نمیکنه.

کد پی‌اچ‌پی:
if (php_sapi_name() !='cli') exit; 

روش دوم:

کد پی‌اچ‌پی:
 if (!isset($_SERVER["argc"]) || !$_SERVER["argc"])
 {
 echo 
"in file bayad az command line ejra beshe.";
 exit();
 } 

پ.ن: اگر شما کرون جابتون به غیر از حالتی هستش که مسقیم به فایل اسکریپت کرون جاب میدید، مثلا از روش های wget یا curl استفاده میکنید، به جای کد اول از کد زیر استفاده کنید:


کد پی‌اچ‌پی:
if ($_SERVER['HTTP_USER_AGENT'] != 'yourSecretAgent') exit; 

به طور مثال اون قسمت yourSecretAgent رو باید اینجوری بگید توی کرون جاب:
wget -O - --user-agent=“yourSecretAgent” http://example.com/your_script.php


پ.ن 2: Interface های زیاد دیگه ای واسه php_sapi وجود داره، پیشنهاد میکنم لینک زیر رو از سایت پی اچ پی بخونید، مخصوصا کامنت اول رو تا جریان رو متوجه بشید:
http://php.net/manual/en/function.php-sapi-name.php
[عکس: home-icon.png]
پاسخ
 سپاس شده توسط MrAhmad




کاربران در حال بازدید این موضوع: 1 مهمان