p4l1ch |
|
---|---|
Недавно смотрел логи и обнаружил некие странные каракули - сканили сайт через acunetix. Скачал себе и решил сам посканить, посмотреть что скажет. В целом вроде хорошо, но кое-что - мелочи нашлись. rc.php - у меня включено сжатие css\js и он на него массив начал слать - в итоге прямым текстом выдало - php ошибка в такой-то строке в файле /var/www/итд сделал проверку строки - поменял 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'; } на 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 строка if ($maxlen>0) { /* string test*/ if (is_string($v)) { $v = mb_substr($v, 0, $maxlen); } }
и нем же еще 1 проверка на строку ~471 case 'TXT': /* string test*/ if (is_string($v)) { $v = trim($v); if (mb_strpos($v, '<')===FALSE) { $pass = TRUE; } else { $defret = str_replace('<', '<', $v); } } break;
и последнее на что оно сильно ругалось - xss в каноникале - что можно скрипт использовать поменял в header.php $out['canonical_uri'] = empty($out['canonical_uri']) ? str_replace('&', '&', $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);
после этого ругаться перестал, вопрос к знающим людям, подскажите где тут ошибки тк я не программист, а только учусь) |
|
This post was edited by Macik (2016-01-07 12:05, 9 years ago) |