Действия администратора задания Silverstripe Cron

#security #cron #silverstripe

#Безопасность #cron #silverstripe

Вопрос:

У меня есть функция контроллера, разрешение которой установлено на ADMIN, которая должна быть выполнена из задания cron, к сожалению, вызывая его из php или php-cgi говорит, что actipn не разрешен на контроллере. Я временно удалил проверку АДМИНИСТРАТОРА, но она требует больших ресурсов, поэтому это возможный вектор DDOS

Ответ №1:

Вы можете использовать пользовательскую проверку разрешений в своем контроллере, чтобы проверить, выполняется ли вызов из командной строки:

 class FooController extends Controller {
    private static $allowed_actions = array(
        'mySecureAction' => '->MySecurityCheck'
    );

    public function mySecureAction() {
        // do something here
    }

    /**
     * if this method returns true, the action will be executed
     * for more information, view the docs at: http://doc.silverstripe.org/framework/en/topics/controller#access-control
     */
    public function MySecurityCheck() {
        return Director::is_cli() || Permission::check('ADMIN');
    }
}