آموزش

تزریق جیسون چیست ؟ (JSON Injections)

اصطلاح تزریق JSON ممکن است برای توصیف دو نوع اصلی مسائل امنیتی استفاده شود:

  • تزریق JSON در سمت سرور هنگامی اتفاق می افتد که داده های یک منبع غیرقابل اعتماد توسط سرور امن نشوند و مستقیماً به یک جریان JSON نوشته شود.
  • تزریق JSON در سمت مشتری وقتی اتفاق می افتد که داده های منبع JSON غیرقابل اطمینان بهینه و امن نشوند و مستقیماً با استفاده از عملکرد Eval Java تجزیه و تحلیل شود.

JSON چیست؟

JSON یا مخفف عبارت JavaScript Object Notation یک فرمت تبادل داده سبک وزن است که برای برقراری ارتباط بین برنامه ها استفاده می شود. مشابه XML است اما ساده‌تر و مناسب تر برای پردازش توسط JavaScript.

بسیاری از برنامه های وب از این قالب برای برقراری ارتباط بین خودشان استفاده می کنند و داده ها را به صورت مرتب حذف می کنند. برخی از برنامه های وب همچنین از JSON برای ذخیره اطلاعات مهم ، به عنوان مثال داده های کاربر استفاده می کنند. JSON معمولاً در API های RESTful و برنامه های AJAX استفاده می شود.

بیشتر بدانید :

GHDB یا گوگل هکینگ (Google Hacking Database) چیست؟

نمونه هایی از حملات تزریق JSON

تزریق JSON ساده از طرف سرور می تواند به صورت زیر در PHP انجام شود:

  • ۱- سرور داده های کاربر را به عنوان یک رشته JSON از نوع حساب ذخیره می کند .
  • ۲- نام کاربر و پسورد مستقیماً از ورودی کاربر بدون بهینه‌سازی گرفته می شوند .
  • 3- رشته JSON با استفاده از تأیید ساده ساخته شده است ، مثلا :

$json_string = ‘{“account”:”user”,”user”:”‘.$_GET[‘user’].'”,”pass”:”‘.$_GET[‘pass’].'”}’;

  • ۴- کاربر مخرب ، داده را به نام کاربر خود اضافه می کند ، مثلا :

john%22,%22account%22:%22administrator%22

  • ۵- رشته JSON حاصل :
{
  "account":"user",
  "user":"john",
  "account":"administrator",
  "pass":"password"
}
  • ۶- هنگام خواندن رشته ذخیره شده ، تجزیه کننده JSON یا (json_decode) با دو ورودی حساب مواجه می شود و آخرین مورد را می گیرد و دسترسی مدیر یا ادمین به نام کاربری “جان” را می دهد . توجه داشته باشید که عملکرد json_decode اشتباه نیست ، RFC-7159 بیان می کند که “نامهای موجود در یک شی باید منحصر به فرد باشند” ، و باعث می شود که درب تفسیر باز شود.

تزریق JSON ساده از طرف مشتری می تواند به شرح زیر انجام شود:

  • ۱- رشته JSON همانند مثال بالا است
  • 2- سرور رشته JSON را از یک منبع غیرقابل اعتماد دریافت می کند
  • 3- کلاینت رشته JSON را با استفاده از eval تجزیه می کند :
var result = eval("(" + json_string + ")");
document.getElementById("#account").innerText = result.account;
document.getElementById("#user").innerText = result.name; 
document.getElementById("#pass").innerText = result.pass;
  • ۴- مقدار اکانت هست :
همچنین بخوانید  چگونه سریال نامبر Serial Number لپ تاپ یا کامپیوتر خود را بدست آوریم؟

user”});alert(document.cookie);({“account”:”user

  • 5- عملکرد Eval تابع هشدار یا ” alert ” را اجرا می کند .
  • 6- تجزیه و تحلیل نتایج حاصل از حمله Cross-site Scripting یا (XSS).

بیشتر بدانید :

امنیت سیستم چیست ؟ انواع تهدیدات وحملات امنیتی سیستم که باید بدانید

JSON Injection در مقابل JSON Hijacking

در حالی که ربودن JSON (زیرمجموعه‌ ای از Cross-site Script Context یا XSSI) نیز به نماد JSON مربوط است ، اما این حمله کاملاً متفاوت است ، از جهاتی شبیه به Cross-site Request Forgery یا (CSRF) . در مورد ربودن JSON ، مهاجم قصد دارد داده های JSON ارسال شده از وب سرور را به برنامه وب ردیابی کند.

  • ۱- مهاجم یک وب سایت مخرب ایجاد می کند و کد های اسکریپت را در کد خود قرار می دهد که تلاش می کند از طریق برنامه وب مورد حمله به داده های JSON دسترسی پیدا کند.
  • ۲- کاربر که وارد برنامه وب آلوده ، شده است ، از دیدن وب سایت مخرب (معمولاً با استفاده از مهندسی اجتماعی) فریب خورده است .
  • ۳- از آنجا که قوانین اصلی (SOP) اجازه می دهد تا JavaScript هر وب سایتی در متن هر وب سایت دیگری گنجانده و اجرا شود ، کاربر به داده های JSON دسترسی پیدا می کند.
  • ۴- وب سایت مخرب داده های JSON را ربوده است.

جلوگیری از تزریق JSON

همانند اکثر آسیب پذیری های تزریق ، کلید حفظ امنیت برنامه وب و جلوگیری از تزریق JSON بهینه و امن کرده داده ها است . این حمله هم از طرف سرور و هم طرف کلایت با تزریق JSON اعمال می شود.

برای جلوگیری از تزریق JSON در سمت سرور ، قبل از مرتب کردن آن به JSON ، کلیه اطلاعات را بهینه‌سازی و امن کنید. به عنوان مثال ، اگر از جاوا استفاده می کنید ، گزینه خوبی برای امن کردن داده های JSON استفاده از قوانین OWASP JSON Sanitizer است .

بهترین روش برای جلوگیری از تزریق JSON توسط کلایت ، هرگز استفاده از تابلع “Eval” برای ارزیابی داده های JSON نیست . اگر از تابع Eval استفاده می کنید ، داده های غیرقابل اعتماد شامل کد JavaScript هستند ، آن کد اجرا خواهد شد. برای جلوگیری از این امر ، از JSON.parse استفاده کنید. همچنین می توانید خط مشی امنیت محتوا را اجرا کنید که به طور پیش فرض مانع استفاده از ارزیابی می شود.

امین نوری

امیدوارم از مطالب سایت استفاده کنید و لذت ببرید.

نوشته های مشابه

دیدگاهتان را بنویسید

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

دکمه بازگشت به بالا