امنیت JSON.parse

امنیت JSON.parse در جاوااسکریپت

در دنیای توسعه وب، JSON به عنوان استاندارد اصلی برای تبادل داده بین سرور و کلاینت شناخته می‌شود. با این حال، استفاده نادرست از تابع JSON.parse می‌تواند آسیب‌پذیری‌های امنیتی جدی ایجاد کند.

همیشه به یاد داشته باشید: JSON.parse می‌تواند به عنوان یک سلاح در حملات تزریق کد مورد سوءاستفاده قرار گیرد!

تهدیدات اصلی در JSON.parse

برخی از رایج خطرناک استفاده ناامن از این تابع عبارتند از:

  • اجرای کدهای مخرب از طریق prototype pollution
  • حملات تزریق کد (Code Injection)
  • دسترسی غیرمجاز به داده‌های حساس
  • اختلال در عملکرد برنامه (Denial of Service)
نوع حمله مثال راه حل
تزریق کد {"__proto__": {"isAdmin": true}} استفاده از JSON.parse با reviver function
حملات DDoS رشته‌های JSON بسیار بزرگ اعتبارسنجی اندازه داده قبل از پردازش

راهکارهای ایمن‌سازی

برای کاهش خطرات امنیتی هنگام استفاده از JSON.parse، این اقدامات را در نظر بگیرید:

  1. همیشه داده‌های ورودی را قبل از پردازش اعتبارسنجی کنید
  2. از پارامتر reviver برای فیلتر کردن ویژگی‌های خطرناک استفاده کنید
  3. محدودیت‌هایی برای عمق و اندازه ساختار JSON اعمال نمایید
  4. از کتابخانه‌های ایمن مانند JSON5 یا secure-json-parse استفاده کنید

برای مثال، یک پیاده‌سازی ایمن به این شکل خواهد بود:

function safeJsonParse(jsonString) {
    const bannedKeys = ['__proto__', 'constructor', 'prototype'];
    return JSON.parse(jsonString, (key, value) => {
        if(bannedKeys.includes(key)) return undefined;
        return value;
    });
}

برای اطلاعات بیشتر درباره کاربردهای JSON در جاوااسکریپت می‌توانید ادامه مطلب را مطالعه کنید.


به یاد داشته باشید که امنیت داده‌ها در برنامه‌های تحت وب یک مسئله حیاتی است و کوچکترین سهل‌انگاری می‌تواند منجر به آسیب‌پذیری‌های جدی شود.