У меня на панели администратора есть функция журнала, которая проверяет правильность ввода пользователя и, если не правильно, записывает его в файл журнала. Этот файл журнала записывается администратору при входе в систему.
Я проверял свой сайт на наличие уязвимостей, и мне удалось полностью использовать свой сервер, используя дыру в XSS. Я попытался отфильтровать входные данные, проверив входные данные с помощью этой функции:
function isXSS($in){
return preg_match("[<>(%[0-9a-fA-F]{2}+)]", $in) == 1;
}
но это либо параноидально помечает все как ненавистного XSS-червя, либо игнорирует обычные XSS-инъекции. Я думаю, что проблема в квантификаторе +, но я слышал, что другие регулярные выражения PHP позволяют это.