نقل قول نوشته اصلی توسط hoka نمایش پست ها
عزیز شما میخوای کسی نتونه از اون api استفاده بکنه و بزاره مثلا داخل سایت خودش و کاربر هاش استفاده کنن ؟

اگر فقط یکبار در هر مراجعه api اطلاعات میده این کد به دردتون میخوره . اگر نه کد دوم که مخصوص api هست رو تغییر بدید که سشن رو پاک نکنه





کد اول هنگام لود صفحه ی مورد نظر ( تنها در همین صفحه اجرا شود و نه کل اسکریپت ( عدم همپوشانی با api به خاطر حذف نشدن سشن))


کد PHP:
if (session_status() == PHP_SESSION_NONE) {
    
session_start();
}

$api_sec rand(5000005000000);
$_SESSION['api_sec'] = $api_sec;

setcookie("api_sec"$api_sec); 

کد دوم برای فرانت . متغییر url رو به نام چیزی که هست برای api تغییر بدید

کد:
function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}


var url = 'api.php?api_sec='+getCookie('api_sec');

کد سوم مربوط به api

کد PHP:
if(!isset($_SESSION['api_sec']) || empty($_SESSION['api_sec']) || !isset($_GET['api_sec']) || $_GET['api_sec'] != $_SESSION['api_sec']){
    die;
} else{
    
$_SESSION['api_sec'] = "";

مرسی.. این روش رو زده بودیم.. راحت میتونه با curl یک درخواست بزنه سشن یا کوکی رو بگیره و ادامه کار..
خودم فهمیدم 100% نمیشه امنش کرد.. اما دنبال راهی هستم به همین راحتی هم از api استفاده نکنه..