bitrix

Универсальная защита от XSS Bitrix для взломанных сайтов

Published

Инструкция по добавлению настройки безопасности на сайт Bitrix

Местоположение файла: Вставьте скрипт в файл /bitrix/php_interface/init.php, который является центральным местом для добавления пользовательских функций и обработчиков. Это предпочтительнее, чем модификация /bitrix/header.php, поскольку позволяет избежать потери изменений при обновлении системы.

Метод вставки:

  1. Создайте отдельный PHP файл, например security_headers.php, в котором разместите ваш код безопасности.
  2. Включите этот файл в init.php с помощью директивы include

Например:

include($_SERVER['DOCUMENT_ROOT'].'/path/to/security_headers.php');

Проверка работы скрипта:

https://ВАШДОМЕН.ru/?x=eval()

Должно выйти:

denied by antivirus-cinar 1

Сам код скрипта:

<?php $patt = "~\<\?~i"; if(strpos($_SERVER['REQUEST_URI'], '/bitrix/admin/') === false){ header("Content-Security-Policy: connect-src 'self' https://mc.yandex.ru https://bizexpres.ru:7220 https://bitrix.info;");
if(empty($_POST['g-recaptcha-response'])){
if (is_array($_FILES)) {
if(!empty($_FILES['userfile']['name'])) { } else {
foreach($_FILES as $anystring=>$file_data) {
if (preg_match($patt,file_get_contents($file_data['tmp_name']))) die("denied by antivirus-cinar 3");
}
}
}
$patt = "~\/\.\.\/\.\.\/\.\.\/|{0-9a-zA-Z}[80]|eval[^\(]*\(|include[^\(]*\(|base64_decode[^\(]*\(|stripslashes[^\(]*\(|strip_tags[^\(]*\(|fopen[^\(]*\(|chmod[^\(]*\(|chown[^\(]*\(|chgrp[^\(]*\(|unlink[^\(]*\(|unset[^\(]*\(|fgetc[^\(]*\(|fgets[^\(]*\(|file_get_contents[^\(]*\(|file_put_contents[^\(]*\(|fwrite[^\(]*\(|move_uploaded_file[^\(]*\(|is_uploaded_file[^\(]*\(|rmdir[^\(]*\(|fromCharCode[^\(]*\(|tmpfile[^\(]*\(|tempnam[^\(]*\(|phpinfo[^\(]*\(|basename[^\(]*\(|curl_init[^\(]*\(|socket_create[^\(]*\(|popen[^\(]*\(|exec[^\(]*\(|system[^\(]*\(|passthru[^\(]*\(|proc_open[^\(]*\(|gzuncompress[^\(]*\(|shell_exec[^\(]*\(|delete from|insert into~i";

foreach ($_REQUEST as $v1x1) prfilter_x1($v1x1,$patt);
}
}

function prfilter_x1($v1x1,$patt) {
ob_start();
if (is_array($v1x1)) {
foreach ($v1x1 as $vx) prfilter_x1($vx,$patt);
}
else {
if ( preg_match($patt, $v1x1) || preg_match($patt, stripslashes($v1x1) ) ) die("denied by antivirus-cinar 1");
if ( preg_match($patt, base64_decode($v1x1) ) || preg_match($patt, stripslashes(base64_decode($v1x1) ) ) ) die("denied by antivirus-cinar 2");
}
ob_end_clean();
}
?>