Xss и SQL-инъекций сайт защищен, и include - от подключаемых скриптов не известных с нуль байтом и так далее тоже - проверка стоит на существование скрипта из массива, если скрипта нет на сервере отбрасываем пользователя.
Как то так -
if(isset($arrayfile[$name])){
include($_SERVER['DOCUMENT_ROOT'].'/scripts/$arrayfile[$name].php');
}else{
//Подключаем другой файл
}
Но тут наткнулся на одну новую статью на хабре http://habrahabr.ru/post/166855/
И сразу начал тестить что и как, в php скриптах не используется $_SERVER['HOST_NAME'], но сервер $_SERVER['SERVER_NAME'] используется, для переадресации (header).
Тестировал, потом посмотрел логи что получилось, запросы попали в error log с текстом "Client sent malformed Host header"
У меня сервер уязвим сейчас? - нужно что то править, просто я не давно только этим занялся, и многого не знаю в структуре сервера...
Все запросы такие как "$out.= "Host: /www.site.ru\r\n"; , $out.= "Host: ../../www.site.ru\r\n"; $out.= "Host: /~%#$^&*()<>?@\!.\"'{}[]=+|\r\n";" попадают под ошибку 400
Но запросы с вымышленным Hostom - который может существовать обрабатываются 200 ("Host: http://www.uoppsow.ru/") - с таким хостом допустим работают - 200,
но $_SERVER['SERVER_NAME'] только в скриптах для переадресации
больше не где $_SERVER['SERVER_NAME'] не используется.
header('Location: http://'.$_SERVER['SERVER_NAME'].'/');
exit;
И еще один вопрос, сервер не отдает информацию "HTTP/1.1 200 OK Server: и так далее " если убрать "HTTP/1.1 из запроса к ниму", он выдает только файл индекса - стандартный который прописан - это нормально (Здесь уязвимости нет)?