Ho avuto una regex come prima linea di difesa contro XSS.Regex come prima linea di difesa contro 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);
}
È in realtà da Kohana 2.3.
Viene eseguito su testo inserito pubblico (nessun HTML mai) e nega l'input se non supera questo test. Il testo viene sempre visualizzato con htmlspecialchars()
(o in particolare, Kohana's flavour, aggiunge il set di caratteri tra le altre cose). Ho anche messo un strip_tags()
in uscita.
Il client ha avuto un problema quando voleva inserire del testo con parentesi. Ho pensato di modificare o estendere l'helper, ma ho anche avuto un pensiero secondario - se permetto le virgolette doppie, c'è davvero qualche ragione per cui ho bisogno di validare del tutto?
Posso semplicemente fare affidamento sull'uscita in uscita?