3. تعديل الحدود

تمنع سياسة وضع الحماية الشخص من استدعاء أنظمة مكالمات محددة، وبالتالي تقلل من الأجزاء المعرضة للهجوم. ومع ذلك، قد يظل المهاجم قادرًا على إحداث تأثيرات غير مرغوب فيها من خلال تشغيل عملية إلى أجل غير مسمى أو استنفاد ذاكرة الوصول العشوائي والموارد الأخرى.

لمواجهة هذا التهديد، يخضع تطبيق Sandboxee لقيود التنفيذ الضيقة تلقائيًا. إذا تسبَّبت هذه الحدود التلقائية في حدوث مشاكل أثناء التنفيذ الشرعي لبرنامجك، يمكنك تعديلها باستخدام الفئة sandbox2::Limits من خلال استدعاء limits() على الكائن executor.

يعرض مقتطف الرمز أدناه بعض الأمثلة على تعديلات الحدود. يتم توثيق جميع الخيارات المتاحة في ملف العنوان 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، راجِع المثال الأداة.