Sandbox (سندباکس)

به طور کلی، Sandbox یک محیط رایانش ایزوله و مجزا است که در آن یک فایل یا برنامه می‌تواند بدون تحت‌تأثیر قرار دادن سایر بخش‌های سیستم‌عامل و یا اپلیکیشن،‌ اجرا شود (دولوپرها از سندباکس به منظور تست برنامه‌های نوشته شده، بهره می‌برند).

در زبان برنامه‌نویسی جاوا، بخش‌هایی از صفحات وب و اپلیکیشن‌ها به صورت Applet (اَپلِت) نوشته شده و به همراه صفحهٔ وب و یا اپلیکیشن به دستگاه درخواست‌کننده ارسال می‌گردد. از آنجا که اپلت‌های جاوا به صورت خودکار ارسال و اجرا می‌شوند، اگر به حافظه و بخش‌های مختلف سیستم‌عامل دسترسی نامحدود داشته باشند، ممکن است به صورت تصادفی -و یا حتی به عمد- موجب وارد شدن آسیب‌هایی به سیستم گردند.

در چنین مواقعی، محیط ایزولهٔ سندباکس، مرزهای دقیقی را تعیین نموده و دسترسی اپلت به سایر منایع سیستم را محدود می‌نماید؛ بدین ترتیب، اپلت تنها در محیط محدود سندباکس اجرا شده و از آسیب‌های احتمالی ناشی از آن جلوگیری می‌شود.

سندباکس نه تنها دولوپرها را به پیروی از قواعد و قوانین خاص ملزم می‌کند، بلکه ابزارهایی را نیز برای بررسی کدها فراهم می‌آورد. زبان جاوا ویژگی‌هایی همچون مدیریت خودکار حافظه، گاربیج کالکشن و بررسی محدوده‌ٔ آدرس‌ها در رشته‌ها و آرایه‌ها را به طور ذاتی در خود دارد و این ویژگی‌ها تضمینی بر ایمنی و مشکل‌زا نبودن کدهای جاوا هستند.

علاوه بر این، کدهای جاوا پس از کامپایل شدن به بایت‌کد (Bytecode) باید مورد تأیید قرار گیرند که این موضوع نیز به نوبهٔ خود تضمینی بر رعایت محدودیت‌های خاص در این کدها است. از سوی دیگر فضای مشخصی از حافظه -به طور پیش‌فرض- برای اجرای هر برنامهٔ جاوا در نظر گرفته شده است و همچنین ماشین مجازی جاوا (JVM) که بایت‌کدهای جاوا را برای پلتفرم‌های مختلف کامپیوتری تفسیر می‌نماید نیز به عنوان واسطهٔ دسترسی اپلیکیشن‌های جاوا به منابع سیستم عمل نموده و اعمال محدودیت‌های سندباکس را تضمین می‌نماید.

مدل امنیتی اولیهٔ سندباکس، کد قابل اعتمادی نبود اما در نسخه‌های جدیدتر JDK، سطوح مختلفی از اعتماد تعریف شده و هرچه کاربر اعتماد بیشتری نسبت به کد داشته باشد، محدودیت‌های سندباکس برای اجرای کد کمرنگ‌تر شده و کد این امکان را دارد که در محدودهٔ وسیع‌تری از منابع سیستم اجرا گردد.

به طور مثال، در JDK 1.1 مفهوم Signed Applet (اپلت امضا شده) معرفی شد بدین صورت که کدهایی که امضای دیجیتالی همراه آنها مورد تأیید مرورگر قرار گیرد، مورد اعتماد بوده و به آنها اجازهٔ اجرا داده می‌شود. در JDK 2.0، امکان اختصاص سطوح امنیتی مختلف برای تمام کدهای جاوا فراهم شد و بدین ترتیب یک مکانیسم امنیتی برای بررسی تمام کدها -چه امضا شده و چه امضا نشده- ایحاد شد که از آن پس تا به امروز مورد اجرا قرار گرفته است.

online-support-icon