Регулярное выражение как первая линия защиты от XSS

У меня было регулярное выражение в качестве первой линии защиты от XSS.

public static function standard_text($str)
{
    // pL matches letters
    // pN matches numbers
    // pZ matches whitespace
    // pPc matches underscores
    // pPd matches dashes
    // pPo matches normal puncuation
    return (bool) preg_match('/^[\pL\pN\pZ\p{Pc}\p{Pd}\p{Po}]++$/uD', (string) $str);
}

На самом деле это из Kohana 2.3 .

Это работает с общедоступным введенным текстом (без HTML) и отклоняет ввод, если он не прошел этот тест. Текст всегда отображается с помощью htmlspecialchars () (или, более конкретно, разновидность Kohana , среди прочего он добавляет набор символов). Я также поместил на вывод strip_tags () .

У клиента возникла проблема, когда он хотел ввести текст в круглых скобках. Я думал об изменении или расширении помощника, но у меня также была вторичная мысль - если я разрешаю двойные кавычки, действительно ли есть какая-то причина, по которой мне вообще нужна проверка?

Могу ли я просто положиться на экранирование при выводе?

10
задан alex 16 March 2011 в 09:25
поделиться