Форуми / National / Russian / Тех. поддержка / [Исправлено] О безопасности - acunetix

p4l1ch
#41067 09.10.2015 19:29

Недавно смотрел логи и обнаружил некие странные каракули - сканили сайт через acunetix.

Скачал себе и решил сам посканить, посмотреть что скажет.

В целом вроде хорошо, но кое-что - мелочи нашлись.

rc.php - у меня включено сжатие css\js

и он на него массив начал слать - в итоге прямым текстом выдало - php ошибка в такой-то строке в файле /var/www/итд

сделал проверку строки - поменял

PHP
1
2
3
4
5
if (isset($_GET['rc']) && preg_match('#^[\w\.\-]+\.(js|css)$#', $_GET['rc'], $mt))
{
    $src_uri = $cfg['cache_dir'] . '/static/' . $_GET['rc'];
    $content_type = $mt[1] == 'js' ? 'text/javascript' : 'text/css';
}

на

PHP
1
2
3
4
5
6
7
if (isset($_GET['rc']) && is_string($_GET['rc']))
{
    if (preg_match('#^[\w\.\-]+\.(js|css)$#', $_GET['rc'], $mt)){
    $src_uri = $cfg['cache_dir'] . '/static/' . $_GET['rc'];
    $content_type = $mt[1] == 'js' ? 'text/javascript' : 'text/css';
    }
}

 

далее - system/function.php

при проверке других файлов, кажется он докопался к login и начал в него кидать массив, выдал ошибки function, в которых был путь к файлу на сервере

в 2 местах добавил проверку

~432 строка

PHP
1
2
3
4
5
6
7
if ($maxlen>0)
{
    /* string test*/
    if (is_string($v)) {
    $v = mb_substr($v, 0, $maxlen);
    }
}

 

и нем же еще 1 проверка на строку

~471

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
case 'TXT':
/* string test*/
    if (is_string($v))
    {
        $v = trim($v);
        if (mb_strpos($v, '<')===FALSE)
        {
            $pass = TRUE;
        }
    else
    {
        $defret = str_replace('<', '&lt;', $v);
    }
    }
    break;

 

и последнее на что оно сильно ругалось - xss в каноникале - что можно скрипт использовать

поменял в header.php

PHP
1
2
3
4
$out['canonical_uri'] = empty($out['canonical_uri']) ? str_replace('&', '&amp;', $sys['canonical_url']) : $out['canonical_uri'];
$out['canonical_uri'] = strip_tags($out['canonical_uri']);
$out['canonical_uri'] = htmlentities($out['canonical_uri'], ENT_QUOTES, "UTF-8");
$out['canonical_uri'] = htmlspecialchars($out['canonical_uri'], ENT_QUOTES);

 

после этого ругаться перестал, вопрос к знающим людям, подскажите где тут ошибки

тк я не программист, а только учусь)


Відредаговано: Macik (07.01.2016 12:05, 9 років тому)