Slide 15
Slide 15 text
CC Attribution-ShareAlike 3.0 Unported License by Er Galvão Abbott – 2010-11-23 – 15 / 16
Nem Black List, “nem White List”
Exemplo #6 (simplificado e falho) – Encontrando e limitando tags XHTML
$validTags = array('table', 'thead', 'tbody', 'tfoot', 'tr', 'th', td');
preg_match_all('/<[a-z]+/', $str, $foundTags);
foreach ($foundTags[0] as $tag) {
if (!in_array(substr($tag, 1), $validTags)) {
die("Tag invalida: $tag");
}
}
Uma forma mais complexa e mais segura seria a análise caractere-a-caractere. Cada
código numérico de cada caractere seria então comparado ao código numérico do sinal de
menor, seguido de letras e outros caracteres típicos de tags XHTML, seguido por uma
forma de fechamento (barra seguida do nome da tag ou barra seguida do sinal de maior).
O que é realmente importante neste exemplo é a definição da White List (o array
do início).