3- تعديل الحدود
تمنع "سياسة وضع الحماية" تطبيق 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
، راجِع المثال للأداة.