Инструкция по добавлению настройки безопасности на сайт Bitrix
Местоположение файла: Вставьте скрипт в файл /bitrix/php_interface/init.php, который является центральным местом для добавления пользовательских функций и обработчиков. Это предпочтительнее, чем модификация /bitrix/header.php, поскольку позволяет избежать потери изменений при обновлении системы.
Метод вставки:
- Создайте отдельный PHP файл, например
security_headers.php, в котором разместите ваш код безопасности. - Включите этот файл в
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();
}
?>