XSS PHP Log Filter? - PullRequest
       7

XSS PHP Log Filter?

0 голосов
/ 26 февраля 2010

У меня на панели администратора есть функция журнала, которая проверяет правильность ввода пользователя и, если не правильно, записывает его в файл журнала. Этот файл журнала записывается администратору при входе в систему.

Я проверял свой сайт на наличие уязвимостей, и мне удалось полностью использовать свой сервер, используя дыру в XSS. Я попытался отфильтровать входные данные, проверив входные данные с помощью этой функции:

function isXSS($in){
    return preg_match("[<>(%[0-9a-fA-F]{2}+)]", $in) == 1;
}

но это либо параноидально помечает все как ненавистного XSS-червя, либо игнорирует обычные XSS-инъекции. Я думаю, что проблема в квантификаторе +, но я слышал, что другие регулярные выражения PHP позволяют это.

Ответы [ 2 ]

2 голосов
/ 26 февраля 2010

Что не так со старым добрым htmlspecialchars ? Я понимаю, почему вы, возможно, захотите отследить потенциально злонамеренных пользователей, но если вы вместо этого вкладываете свою энергию в простое блокирование дыр в безопасности, то в этом действительно нет необходимости.

1 голос
/ 26 февраля 2010

Вы пытаетесь перечислить зло , это битва, которую вы никогда не выиграете. Вместо этого вы должны разрешать только разметку, которую, как вы знаете, хорошо, через библиотеку, например htmlpurifier

Кроме того, я не уверен в синтаксисе {2}+, но я считаю, что это ближе к тому, что вы хотите:

"[<>(%[0-9a-fA-F]{2,})]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...