$Date: 2006-06-08 17:11:50 +0100 (Thu, 08 Jun 2006) $ | > $Revision: 289 $ | > $Author: bfarber $ +--------------------------------------------------------------------------- | | > Admin Logs Stuff | > Module written by Matt Mecham | > Date started: 11nd September 2002 | | > Module Version Number: 1.0.0 | > DBA Checked: Mon 24th May 2004 +-------------------------------------------------------------------------- */ if ( ! defined( 'IN_ACP' ) ) { print "

Некорректный адрес

Вы не имеете доступа к этому файлу напрямую. Если вы недавно обновляли форум, вы должны обновить все соответствующие файлы."; exit(); } class ad_security { var $base_url; /** * Section title name * * @var string */ var $perm_main = "admin"; /** * Section title name * * @var string */ var $perm_child = "security"; function auto_run() { $this->ipsclass->admin->nav[] = array( $this->ipsclass->form_code, 'Центр безопасности' ); //----------------------------------------- // LOAD HTML //----------------------------------------- $this->html = $this->ipsclass->acp_load_template('cp_skin_security'); switch($this->ipsclass->input['code']) { default: $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->security_overview(); break; case 'stronghold': $this->do_stronghold(); break; case 'dynamic_images': $this->do_dynamic_images(); break; case 'acplink': $this->do_acplink(); break; case 'virus_check': $this->anti_virus_check(); break; case 'deep_scan': $this->deep_scan(); break; case 'list_admins': $this->list_admins(); break; case 'htaccess': $this->do_htaccess(); break; case 'confglobal': $this->do_confglobal(); break; case 'acprename': $this->do_acprename(); break; case 'acphtaccess': $this->acphtaccess_form(); break; case 'acphtaccess_do': $this->acphtaccess_do(); break; } } /*-------------------------------------------------------------------------*/ // ACP HTACCESS: Step two /*-------------------------------------------------------------------------*/ function acphtaccess_do() { //----------------------------------------- // INIT //----------------------------------------- $name = trim( $_POST['name'] ); $pass = trim( $_POST['pass'] ); $htaccess_pw = ""; $htaccess_auth = ""; //----------------------------------------- // Check... //----------------------------------------- if ( ! $name or ! $pass ) { $this->ipsclass->main_msg = "Вы должны полностью заполнить форму."; $this->acphtaccess_form(); return; } //----------------------------------------- // Format files... //----------------------------------------- $htaccess_auth = "AuthType Basic\n" . "AuthName \"IPB ACP\"\n" . "AuthUserFile " . ROOT_PATH . IPB_ACP_DIRECTORY . "/.htpasswd\n" . "Require valid-user\n"; $htaccess_pw = $name . ":" . crypt( $pass, base64_encode( $pass ) ); if ( $FH = @fopen( ROOT_PATH . IPB_ACP_DIRECTORY . '/' . '.htpasswd', 'w' ) ) { fwrite( $FH, $htaccess_pw ); fclose( $FH ); $FF = @fopen( ROOT_PATH . IPB_ACP_DIRECTORY . '/' . '.htaccess', 'w' ); fwrite( $FF, $htaccess_auth ); fclose( $FF ); $this->ipsclass->main_msg = "Файл защиты успешно создан."; $this->security_overview(); } else { $this->ipsclass->html .= $this->html->htaccess_data( $htaccess_pw, $htaccess_auth ); $this->ipsclass->admin->nav[] = array( '', '.htaccess АЦ' ); $this->ipsclass->admin->output(); } } /*-------------------------------------------------------------------------*/ // ACP HTACCESS: Step One /*-------------------------------------------------------------------------*/ function acphtaccess_form() { //----------------------------------------- // Show it //----------------------------------------- $this->ipsclass->html .= $this->html->htaccess_form(); $this->ipsclass->admin->nav[] = array( '', '.htaccess АЦ' ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Rename ACP directory /*-------------------------------------------------------------------------*/ function do_acprename() { //----------------------------------------- // Show it //----------------------------------------- $this->ipsclass->html .= $this->html->rename_admin_dir(); $this->ipsclass->admin->nav[] = array( '', 'Изменение директории админцентра' ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Change conf global /*-------------------------------------------------------------------------*/ function do_confglobal() { //----------------------------------------- // INIT //----------------------------------------- $done = 0; //----------------------------------------- // Try... //----------------------------------------- if ( @chmod( ROOT_PATH . 'conf_global.php', 0444) ) { $done = 1; } //----------------------------------------- // Wow, that was really hard. I deserve a // payraise after this function... //----------------------------------------- if ( $done ) { $this->ipsclass->main_msg = "CHMOD успешно изменен."; } else { $this->ipsclass->main_msg = "Невозможно продолжить операцию.
Пожалуйста, установите файлу «conf_global.php» при помощи FTP-программы атрибуты доступа (CHMOD) 0444."; } $this->security_overview(); } /*-------------------------------------------------------------------------*/ // Add htaccess to non IPB dirs /*-------------------------------------------------------------------------*/ function do_htaccess() { //----------------------------------------- // INIT //----------------------------------------- $name = '.htaccess'; $msg = array(); $dirs = array( ROOT_PATH . 'cache', ROOT_PATH . 'skin_acp', ROOT_PATH . 'style_avatars', ROOT_PATH . 'style_emoticons', ROOT_PATH . 'style_images', ROOT_PATH . 'style_captcha', ROOT_PATH . 'uploads' ); $towrite = << Order allow,deny Deny from all # EOF; //----------------------------------------- // Do it! //----------------------------------------- foreach( $dirs as $directory ) { if ( $FH = @fopen( $directory . '/'. $name, 'w' ) ) { fwrite( $FH, $towrite ); fclose( $FH ); $msg[] = "Запись «.htaccess» в директорию $directory..."; } else { $msg[] = "Невозможно произвести запись в $directory..."; } } //----------------------------------------- // Done... //----------------------------------------- $this->ipsclass->main_msg = implode( "
", $msg ); $this->security_overview(); } /*-------------------------------------------------------------------------*/ // List admins /*-------------------------------------------------------------------------*/ function list_admins() { //----------------------------------------- // INIT //----------------------------------------- $content = ""; $groups = array(); $query = ""; $members = array(); //----------------------------------------- // Get all admin groups... //----------------------------------------- $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'groups', 'where' => 'g_access_cp > 0 AND g_access_cp IS NOT NULL' ) ); $o = $this->ipsclass->DB->exec_query(); while( $row = $this->ipsclass->DB->fetch_row( $o ) ) { $_gid = intval( $row['g_id'] ); # I hate looped queries, but this should be OK. $this->ipsclass->DB->build_query( array( 'select' => '*', 'from' => 'members', 'where' => "mgroup=" . $_gid ." OR mgroup_others LIKE '%,". $_gid .",%' OR mgroup_others='".$_gid."' OR mgroup_others LIKE '".$_gid.",%' OR mgroup_others LIKE '%,".$_gid."'", 'order' => 'joined DESC' ) ); $b = $this->ipsclass->DB->exec_query(); while( $member = $this->ipsclass->DB->fetch_row( $b ) ) { if ( ! $member['mgroup'] AND ! $member['mgroup_others'] ) { continue; } $members[ $member['id'] ] = $member; } $groups[ $row['g_id'] ] = $row; } //----------------------------------------- // Generate list //----------------------------------------- foreach( $members as $id => $member ) { $member['members_display_name'] = $member['members_display_name'] ? $member['members_display_name'] : $member['name']; $member['_mgroup'] = $this->ipsclass->cache['group_cache'][ $member['mgroup'] ]['g_title']; $_tmp = array(); $member['_joined'] = $this->ipsclass->get_date( $member['joined'], 'JOINED' ); foreach( explode( ",", $member['mgroup_others'] ) as $gid ) { if ( $gid ) { $_tmp[] = $this->ipsclass->cache['group_cache'][ $gid ]['g_title']; } } $member['_mgroup_others'] = implode( ", ", $_tmp ); $content .= $this->html->list_admin_row( $member ); } $this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( "Пользователи, имеющие доступ в АЦ", "Ниже приведен список пользователей, которые имеют доступ в админцентр.
Если в списке присутствуют пользователи, которые не должны иметь доступ в админцентр, вы можете исправить это, нажав «Изменить» рядом с нужной учетной записью." ) ."
"; $this->ipsclass->html .= $this->html->list_admin_overview( $content ); $this->ipsclass->admin->nav[] = array( '', 'Список администраторов' ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Deep scan /*-------------------------------------------------------------------------*/ function deep_scan() { //----------------------------------------- // INIT //----------------------------------------- $filter = trim( $this->ipsclass->input['filter'] ); $file_count = 0; $bad_count = 0; $content = ""; $checked_content = ""; $colors = array( 0 => '#84ff00', 1 => '#84ff00', 2 => '#b5ff00', 3 => '#b5ff00', 4 => '#ffff00', 5 => '#ffff00', 6 => '#ffde00', 7 => '#ffde00', 8 => '#ff8400', 9 => '#ff8400', 10 => '#ff0000' ); //----------------------------------------- // Get class //----------------------------------------- require_once( ROOT_PATH . 'sources/classes/class_virus_checker.php' ); $class_virus_checker = new class_virus_checker(); $class_virus_checker->ipsclass =& $this->ipsclass; //----------------------------------------- // Run it... //----------------------------------------- $class_virus_checker->anti_virus_deep_scan( ROOT_PATH, '(php|cgi|pl|perl|php3|php4|php5|php6)' ); //----------------------------------------- // Update... //----------------------------------------- $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); $cache_array = unserialize(stripslashes($cache['cs_value'])); $cache_array['last_deepscan_check'] = time(); $this->ipsclass->update_cache( array( 'name' => 'systemvars', 'value' => $cache_array, 'array' => 1, 'donow' => 1 ) ); //----------------------------------------- // Got any bad files? //----------------------------------------- if ( is_array( $class_virus_checker->bad_files ) and count( $class_virus_checker->bad_files ) ) { foreach( $class_virus_checker->bad_files as $idx => $data ) { $file_count++; $_data = array(); $_info = stat( $data['file_path'] ); $_data['size'] = filesize( $data['file_path'] ); $_data['human'] = ceil( $_data['size'] / 1024 ); $_data['mtime'] = $this->ipsclass->get_date( $_info['mtime'], 'SHORT' ); $_data['score'] = $data['score']; $_data['left_width'] = $data['score'] * 5; $_data['right_width'] = 50 - $_data['left_width']; $_data['color'] = $colors[ $data['score'] ]; if ( $data['score'] >= 7 ) { $bad_score++; } if ( strstr( $filter, 'score' ) ) { $_filter = intval( str_replace( 'score-', '', $filter ) ); if ( $data['score'] < $_filter ) { continue; } } else if ( $filter == 'large' ) { if ( $_data['human'] < 55 ) { continue; } } else if ( $filter == 'recent' ) { if ( $_info['mtime'] < time() - 86400 * 30 ) { continue; } } else if ( $filter == 'all' ) { } else { $filter = ""; } if ( strtoupper( substr(PHP_OS, 0, 3) ) == 'WIN' ) { $file_path = str_replace( ROOT_PATH, "", $data['file_path'] ); $file_path = str_replace( "\\", "/", $file_path ); $data['file_path'] = str_replace( "/\\", "\\", $data['file_path'] ); } else { $file_path = str_replace( ROOT_PATH.'/', '', $data['file_path'] ); $data['file_path'] = str_replace( ROOT_PATH.'/', '', $data['file_path'] ); } $content .= $this->html->deep_scan_bad_files_row( $file_path, $data['file_path'], $_data ); } if ( $bad_score ) { $this->ipsclass->html .= $this->ipsclass->skin_acp_global->warning_box( 'Используемые системой файлы', 'Сканер обнаружил следующие файлы.
'.$bad_score.' из '.$file_count.' файлов имеют рейтинг 7/10 и выше.
Если вам неизвестно происхождение какого-либо из файлов, мы рекомендуем вам их очень внимательно изучить.' ) . "
"; } else { $this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( 'Используемые системой файлы', 'Сканер проверил '.$file_count.' файлов.
Если вам неизвестно происхождение какого-либо из файлов, мы рекомендуем вам их очень внимательно изучить.' ) . "
"; } $this->ipsclass->html .= $this->html->deep_scan_bad_files_wrapper( $content ); } //----------------------------------------- // Fix filter... //----------------------------------------- if ( $filter ) { $this->ipsclass->html = preg_replace( "#(value=[\"']".preg_quote( $filter, '#' )."['\"])#i", "\\1 selected='selected'", $this->ipsclass->html ); } $this->ipsclass->admin->nav[] = array( '', 'Сканер' ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // Anti virus checker /*-------------------------------------------------------------------------*/ function anti_virus_check() { //----------------------------------------- // INIT //----------------------------------------- $content = ""; $checked_content = ""; $colors = array( 0 => '#84ff00', 1 => '#84ff00', 2 => '#b5ff00', 3 => '#b5ff00', 4 => '#ffff00', 5 => '#ffff00', 6 => '#ffde00', 7 => '#ffde00', 8 => '#ff8400', 9 => '#ff8400', 10 => '#ff0000' ); //----------------------------------------- // Get class //----------------------------------------- require_once( ROOT_PATH . 'sources/classes/class_virus_checker.php' ); $class_virus_checker = new class_virus_checker(); $class_virus_checker->ipsclass =& $this->ipsclass; //----------------------------------------- // Run it... //----------------------------------------- $class_virus_checker->run_scan(); //----------------------------------------- // Update... //----------------------------------------- $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); $cache_array = unserialize(stripslashes($cache['cs_value'])); $cache_array['last_virus_check'] = time(); $this->ipsclass->update_cache( array( 'name' => 'systemvars', 'value' => $cache_array, 'array' => 1, 'donow' => 1 ) ); //----------------------------------------- // Got any bad files? //----------------------------------------- if ( is_array( $class_virus_checker->bad_files ) and count( $class_virus_checker->bad_files ) ) { foreach( $class_virus_checker->bad_files as $idx => $data ) { $_data = array(); $_info = stat( $data['file_path'] ); $_data['size'] = filesize( $data['file_path'] ); $_data['human'] = ceil( $_data['size'] / 1024 ); $_data['mtime'] = $this->ipsclass->get_date( $_info['mtime'], 'SHORT' ); $_data['score'] = $data['score']; $_data['left_width'] = $data['score'] * 5; $_data['right_width'] = 50 - $_data['left_width']; $_data['color'] = $colors[ $data['score'] ]; if ( strtoupper( substr(PHP_OS, 0, 3) ) == 'WIN' ) { $root_path = str_replace( "/", "\\", ROOT_PATH ); $file_path = str_replace( $root_path, "", $data['file_path'] ); $file_path = str_replace( "\\", "/", $file_path ); } else { $file_path = str_replace( ROOT_PATH, '', $data['file_path'] ); } $content .= $this->html->anti_virus_bad_files_row( $file_path, $data['file_path'], $_data ); } $this->ipsclass->html .= $this->ipsclass->skin_acp_global->warning_box( 'Обнаружены подозрительные файлы', 'Ниже приведен список обнаруженных подозрительных файлов.
Если вы не уверены, что загружали их, то, пожалуйста, удалите их в целях безопасности.' ) . "
"; $this->ipsclass->html .= $this->html->anti_virus_bad_files_wrapper( $content ); } else { $this->ipsclass->html .= $this->ipsclass->skin_acp_global->information_box( 'Подозрительные файлы не обнаружены', 'Сканер не обнаружил подозрительных файлов.
Пожалуйста, старайтесь как можно чаще проводить эту проверку.' ) . "
"; } //----------------------------------------- // Show checked folders... //----------------------------------------- if ( is_array( $class_virus_checker->checked_folders ) and count( $class_virus_checker->checked_folders ) ) { foreach( $class_virus_checker->checked_folders as $name ) { $checked_content .= $this->html->anti_virus_checked_row( str_replace( ROOT_PATH, '', $name ) ); } $this->ipsclass->html .= $this->html->anti_virus_checked_wrapper( $checked_content ); } $this->ipsclass->admin->nav[] = array( '', 'Проверка на вирусы' ); $this->ipsclass->admin->output(); } /*-------------------------------------------------------------------------*/ // ACP LINK /*-------------------------------------------------------------------------*/ function do_acplink() { //----------------------------------------- // Update the setting... //----------------------------------------- $this->update_setting( 'security_remove_acp_link', $this->ipsclass->vars['security_remove_acp_link'] ? 0 : 1 ); //----------------------------------------- // Done.. //----------------------------------------- $lang = $this->ipsclass->vars['security_remove_acp_link'] == 0 ? 'восстановлена' : 'удалена'; $this->ipsclass->main_msg = "Ссылка на админцентр {$lang}."; $this->security_overview(); } /*-------------------------------------------------------------------------*/ // DYNAMIC IMAGES /*-------------------------------------------------------------------------*/ function do_dynamic_images() { //----------------------------------------- // Update the setting... //----------------------------------------- $this->update_setting( 'allow_dynamic_img', $this->ipsclass->vars['allow_dynamic_img'] ? 0 : 1 ); //----------------------------------------- // Done.. //----------------------------------------- $lang = $this->ipsclass->vars['allow_dynamic_img'] == 0 ? 'запрещены' : 'разрешены'; $this->ipsclass->main_msg = "Динамические изобаржения {$lang}."; $this->security_overview(); } /*-------------------------------------------------------------------------*/ // STRONG HOLD COOKIE /*-------------------------------------------------------------------------*/ function do_stronghold() { //----------------------------------------- // Update the setting... //----------------------------------------- $this->update_setting( 'cookie_stronghold', $this->ipsclass->vars['cookie_stronghold'] ? 0 : 1 ); //----------------------------------------- // Done.. //----------------------------------------- $lang = $this->ipsclass->vars['cookie_stronghold'] == 0 ? 'выключены' : 'включены'; $this->ipsclass->main_msg = "Защищеные cookie {$lang}."; $this->security_overview(); } /*-------------------------------------------------------------------------*/ // Update setting /*-------------------------------------------------------------------------*/ function update_setting( $key, $value ) { //----------------------------------------- // Check //----------------------------------------- if ( ! $key ) { return FALSE; } //----------------------------------------- // Update DB //----------------------------------------- $this->ipsclass->DB->do_update( 'conf_settings', array( 'conf_value' => $value ), "conf_key='".$key."'" ); //----------------------------------------- // Rebuild settings cache //----------------------------------------- require_once( ROOT_PATH . 'sources/action_admin/settings.php' ); $settings = new ad_settings(); $settings->ipsclass =& $this->ipsclass; $settings->setting_rebuildcache(); //----------------------------------------- // Done... //----------------------------------------- return TRUE; } /*-------------------------------------------------------------------------*/ // View current log in logs /*-------------------------------------------------------------------------*/ function security_overview() { //----------------------------------------- // INIT //----------------------------------------- $content = array( 'bad' => '', 'good' => '', 'ok' => '' ); $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'cache_store', 'where' => "cs_key='systemvars'" ) ); $cache_array = unserialize(stripslashes($cache['cs_value'])); //----------------------------------------- // Virus checker link //----------------------------------------- if ( intval($cache_array['last_virus_check']) < time() - 7 * 86400 ) { $content['bad'] .= $this->html->security_item_bad( 'Сканер подозрительных файлов', 'Сканер проверит наиболее часто используемые директории для загрузки файлов на подозрительные файлы.
Сканер на подозрительные файлы не запускали более недели.', 'Запустить', $this->ipsclass->form_code_js.'&code=virus_check', 'vchecker' ); } else { $last_run = $this->ipsclass->get_date( $cache_array['last_virus_check'], 'SHORT' ); $content['good'] .= $this->html->security_item_good( 'Сканер подозрительных файлов', 'Сканер проверит наиболее часто используемые директории для загрузки файлов на подозрительные файлы.
Последний запуск: '.$last_run, 'Запустить', $this->ipsclass->form_code_js.'&code=virus_check', 'vchecker' ); } //----------------------------------------- // Deep scan link //----------------------------------------- if ( intval($cache_array['last_deepscan_check']) < time() - 30 * 86400 ) { $content['bad'] .= $this->html->security_item_bad( 'Глубокое сканирование', 'Сканер проверит и выведет список всех файлов вашей системы.
Сканер не запускали более месяца.', 'Запустить', $this->ipsclass->form_code_js.'&code=deep_scan', 'deepscan' ); } else { $last_run = $this->ipsclass->get_date( $cache_array['last_deepscan_check'], 'SHORT' ); $content['good'] .= $this->html->security_item_good( 'Глубокое сканирование', 'Сканер проверит и выведет список всех файлов вашей системы.
Последний запуск: '.$last_run, 'Запустить', $this->ipsclass->form_code_js.'&code=deep_scan', 'deepscan' ); } //----------------------------------------- // Get .htaccess settings //----------------------------------------- if ( strtoupper( substr(PHP_OS, 0, 3) ) !== 'WIN' ) { $_extra = ''; if ( ! is_writeable( ROOT_PATH . IPB_ACP_DIRECTORY ) ) { $_extra = "
IPB не может произвести запись файла «.htaccess» в директорию админцентра. Пожалуйста, установите атрибуты доступа (CHMOD) 0777 на эту директорию при помощи FTP-программы.
"; } if ( ! file_exists( ROOT_PATH . IPB_ACP_DIRECTORY . '/.htaccess' ) ) { $content['ok'] .= $this->html->security_item_ok( 'Защита файлом «.htaccess» АЦ', 'Для повышения безопасности вы можете добавить HTTP-аутентификацию на директорию админцентра (по умолчанию: /admin/).
IPB не обнаружил «.htaccess» файл в директории админцентра.'. $_extra, 'Подробнее', $this->ipsclass->form_code_js.'&code=acphtaccess', 'acphtaccess' ); } else { $content['good'] .= $this->html->security_item_good( 'Защита файлом «.htaccess» АЦ', 'Для повышения безопасности вы можете добавить HTTP-аутентификацию на директорию админцентра (по умолчанию: /admin/).
IPB обнаружил «.htaccess» файл в директории админцентра.'.$_extra, 'Подробнее', $this->ipsclass->form_code_js.'&code=acphtaccess', 'acphtaccess' ); } # Other htaccess protection if ( ! file_exists( ROOT_PATH . 'style_emoticons/.htaccess' ) ) { $content['ok'] .= $this->html->security_item_ok( 'Защита файлом «.htaccess»', 'IPB может записать файл «.htaccess» в директории, где не содержатся php-файлы, препятствуя тем самым запуску файлов PHP и CGI в этих директориях.
IPB не обнаружил какие-либо «.htaccess» файлы.', 'Запустить', $this->ipsclass->form_code_js.'&code=htaccess', 'htaccess' ); } else { $content['good'] .= $this->html->security_item_good( 'Защита файлом «.htaccess»', 'IPB может записать файл «.htaccess» в директории, где не содержатся php-файлы, препятствуя тем самым запуску файлов PHP и CGI в этих директориях.
IPB обнаружил «.htaccess» файлы.', 'Запустить', $this->ipsclass->form_code_js.'&code=htaccess', 'htaccess' ); } //----------------------------------------- // Conf global //----------------------------------------- if ( is_writeable( ROOT_PATH . 'conf_global.php' ) ) { $content['bad'] .= $this->html->security_item_bad( 'Запись в файл «conf_global»', 'После установки IPB рекомендуется изменить атрибуты доступа к файлу «conf_global.php», чтобы другие пользователи не могли произвести чтение или запись.
«conf_global.php» доступен для записи.', 'Запустить', $this->ipsclass->form_code_js.'&code=confglobal', 'confglobal' ); } else { $content['good'] .= $this->html->security_item_good( 'Запись в файл «conf_global»', 'После установки IPB рекомендуется изменить атрибуты доступа к файлу «conf_global.php», чтобы другие пользователи не могли произвести чтение или запись.
«conf_global.php» недоступен для записи.', 'Запустить', $this->ipsclass->form_code_js.'&code=confglobal', 'confglobal' ); } } //----------------------------------------- // Dynamic images //----------------------------------------- if ( ! $this->ipsclass->vars['allow_dynamic_img'] ) { $content['good'] .= $this->html->security_item_good( 'Отключение динамических изображений', 'IP.Board может запретить использовать динамические изображения в сообщениях. Их использование в сообщениях подвергает большому риску безопасность вашего форума.
Динамические изображения в данный момент запрещены.', 'Исправить', $this->ipsclass->form_code_js.'&code=dynamic_images', 'dynamic_images' ); } else { $content['bad'] .= $this->html->security_item_bad( 'Отключение динамических изображений', 'IP.Board может запретить использовать динамические изображения в сообщениях. Их использование в сообщениях подвергает большому риску безопасность вашего форума.
Динамические изображения РАЗРЕШЕНЫ.', 'Исправить', $this->ipsclass->form_code_js.'&code=dynamic_images', 'dynamic_images' ); } //----------------------------------------- // Strong hold cookie //----------------------------------------- if ( ! $this->ipsclass->vars['cookie_stronghold'] ) { $content['bad'] .= $this->html->security_item_bad( 'Защищенные cookies', 'IPB может записывать более защищенные cookies в браузер пользователя после его успешной авторизации, тем самым снижая вероятность их кражи злоумышленником.
Защищенные cookies отключены.', 'Исправить', $this->ipsclass->form_code_js.'&code=stronghold', 'stronghold' ); } else { $content['good'] .= $this->html->security_item_good( 'Защищенные cookies', 'IPB может записывать более защищенные cookies в браузер пользователя после его успешной авторизации, тем самым снижая вероятность их кражи злоумышленником.
Защищенные cookies включены.', 'Исправить', $this->ipsclass->form_code_js.'&code=stronghold', 'stronghold' ); } //----------------------------------------- // Remove ACP link //----------------------------------------- if ( ! $this->ipsclass->vars['security_remove_acp_link'] ) { $content['ok'] .= $this->html->security_item_ok( 'Удаление ссылки на админцентр', 'IPB может удалить ссылку «Админцентр» из пользовательской панели навигации на вашем форуме.
Данная ссылка отображается, когда пользователь авторизирован на форуме как администратор.', 'Исправить', $this->ipsclass->form_code_js.'&code=acplink', 'acplink' ); } else { $content['good'] .= $this->html->security_item_good( 'Удаление ссылки на админцентр', 'IPB может удалить ссылку «Админцентр» из пользовательской панели навигации на вашем форуме.
Данная ссылка отображается, когда пользователь авторизирован на форуме как администратор.
Ссылка на админцентр в данный момент удалена.', 'Исправить', $this->ipsclass->form_code_js.'&code=acplink', 'acplink' ); } //----------------------------------------- // ACP directory renamed //----------------------------------------- if ( IPB_ACP_DIRECTORY == 'admin' ) { $content['ok'] .= $this->html->security_item_ok( 'Название директории АЦ', 'Стандартную директорию админцентра (/admin/) можно переименовать — тем самым злоумышленнику будет сложнее нарушить работу форума в случае взлома учетной записи какого-либо из администраторов.
Директория админцентра не переименована.', 'Подробнее', $this->ipsclass->form_code_js.'&code=acprename', 'acprename' ); } else { $content['good'] .= $this->html->security_item_good( 'Название директории АЦ', 'Стандартную директорию админцентра (/admin/) можно переименовать — тем самым злоумышленнику будет сложнее нарушить работу форума в случае взлома учетной записи какого-либо из администраторов.
Директория админцентра переименована.', 'Подробнее', $this->ipsclass->form_code_js.'&code=acprename', 'acprename' ); } //----------------------------------------- // Print... //----------------------------------------- $this->ipsclass->html .= $this->html->security_overview( $content ); $this->ipsclass->admin->output(); } } ?>