3. محدودیت ها را تنظیم کنید

خط مشی Sandbox از فراخوانی Sandboxee با سیستم های خاص جلوگیری می کند و در نتیجه سطح حمله را کاهش می دهد. با این حال، یک مهاجم ممکن است همچنان بتواند با اجرای یک فرآیند به طور نامحدود یا خسته کردن RAM و سایر منابع، اثرات نامطلوبی ایجاد کند.

برای مقابله با این تهدید، Sandboxee به طور پیش‌فرض تحت محدودیت‌های اجرایی محدود اجرا می‌شود. اگر این محدودیت‌های پیش‌فرض باعث ایجاد مشکلاتی در اجرای قانونی برنامه شما می‌شوند، می‌توانید با استفاده از کلاس sandbox2::Limits با فراخوانی limits() روی شی اجرا، آنها را تنظیم کنید.

قطعه کد زیر چند نمونه از تنظیمات حد را نشان می دهد. تمام گزینه های موجود در فایل هدر limits.h مستند شده است.

// Restrict the address space size of the sandboxee to 4 GiB.
executor->limits()->set_rlimit_as(4ULL << 30);
// Kill sandboxee with SIGXFSZ if it writes more than 1 GiB to the filesystem.
executor->limits()->set_rlimit_fsize(1ULL << 30);
// Number of file descriptors which can be used by the sandboxee.
executor->limits()->set_rlimit_nofile(1ULL << 10);
// The sandboxee is not allowed to create core files.
executor->limits()->set_rlimit_core(0);
// Maximum 300s of real CPU time.
executor->limits()->set_rlimit_cpu(300);
// Maximum 120s of wall time.
executor->limits()->set_walltime_limit(absl::Seconds(120));

برای مثالی از استفاده از کلاس sandbox2::Limits ، ابزار نمونه را ببینید.

،

3. محدودیت ها را تنظیم کنید

خط مشی Sandbox از فراخوانی Sandboxee با سیستم های خاص جلوگیری می کند و در نتیجه سطح حمله را کاهش می دهد. با این حال، یک مهاجم ممکن است همچنان بتواند با اجرای یک فرآیند به طور نامحدود یا خسته کردن RAM و سایر منابع، اثرات نامطلوبی ایجاد کند.

برای مقابله با این تهدید، Sandboxee به طور پیش‌فرض تحت محدودیت‌های اجرایی محدود اجرا می‌شود. اگر این محدودیت‌های پیش‌فرض باعث ایجاد مشکلاتی در اجرای قانونی برنامه شما می‌شوند، می‌توانید با استفاده از کلاس sandbox2::Limits با فراخوانی limits() روی شی اجرا، آنها را تنظیم کنید.

قطعه کد زیر چند نمونه از تنظیمات حد را نشان می دهد. تمام گزینه های موجود در فایل هدر limits.h مستند شده است.

// Restrict the address space size of the sandboxee to 4 GiB.
executor->limits()->set_rlimit_as(4ULL << 30);
// Kill sandboxee with SIGXFSZ if it writes more than 1 GiB to the filesystem.
executor->limits()->set_rlimit_fsize(1ULL << 30);
// Number of file descriptors which can be used by the sandboxee.
executor->limits()->set_rlimit_nofile(1ULL << 10);
// The sandboxee is not allowed to create core files.
executor->limits()->set_rlimit_core(0);
// Maximum 300s of real CPU time.
executor->limits()->set_rlimit_cpu(300);
// Maximum 120s of wall time.
executor->limits()->set_walltime_limit(absl::Seconds(120));

برای مثالی از استفاده از کلاس sandbox2::Limits ، ابزار نمونه را ببینید.