У меня было регулярное выражение в качестве первой линии защиты от 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 ()
.
У клиента возникла проблема, когда он хотел ввести текст в круглых скобках. Я думал об изменении или расширении помощника, но у меня также была вторичная мысль - если я разрешаю двойные кавычки, действительно ли есть какая-то причина, по которой мне вообще нужна проверка?
Могу ли я просто положиться на экранирование при выводе?