И где здесь дыра? Уберите файл с сервера и все.
В том то и дело. Что файл может залить любой кто имеет доступ к фтп или админ части. И в любой момент он может такой файл создать вновь. Я понимаю что вопрос больше к хостеру и безопасности сервера, но всё же, хочется запретить авторизацию таким способом...
Удалите модуль main - это его функционал
А авторизация ведь полностью умрёт. Она нужна. Но с указанием пароля, а не просто указав ид в метод...
А как по вашему происходит авторизация с паролем? Проверяется пароль, потом выполняется авторизация.
Не занимайтесь ерундой. Не давайте фтп если не уверены. И сделайте ограниченные доступы для тех кому не нужен доступ к файловой системе и так далее...
<? class MockCAllUser extends CAllUser { public function Authorize($context, $bSave = false, $bUpdate = true, $applicationId = null, $onlyActive = true) { parent::Authorize($context, $bSave, $bUpdate, $applicationId, $onlyActive); // тут издевайся уже } } AddEventHandler("main", "OnBeforeProlog", "MyOnBeforePrologHandler", 1); function MyOnBeforePrologHandler() { $GLOBALS["USER"] = new MockCAllUser(); } вот что ты хотел, но это дичь
\Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible( 'main', 'OnBeforeUserLoginByHash', ["myAuthFacker", "OnBeforeUserLogin"] ); \Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible( 'main', 'OnBeforeUserLogin', ["myAuthFacker", "OnBeforeUserLogin"] ); \Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible( 'main', 'OnAfterUserAuthorize', ["myAuthFacker", "OnAfterUserAuthorize"] ); \Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible( 'main', 'OnEndBufferContent', ["myAuthFacker", "OnEndBufferContent"] ); class myAuthFacker { protected static $check = false; protected static $mess = false; public static function OnBeforeUserLogin(){ self::$check = true; } public static function OnAfterUserAuthorize(){ if(!self::$check){ global $USER; $USER->Logout(); self::$mess = '<h1 style="font-size:100px;color:red;">myAuthFacker say: Really?</h1>'; } } public static function OnEndBufferContent(&$content){ if(self::$mess){ $content = self::$mess; } } }
Обсуждают сегодня