Lo que quiere decir
patrick_ que nunca te debes de fiar al usurio, siempre tienes que asumir que lo que te pasa el user es malo para tu script.
ejemplo:
Formulario al usuario: ( le pides el nombre )
Código PHP:
Type your name here: <input type="text" name="data" />
Resultado: (le dices hola)
Código PHP:
echo "Hola " . $_POST["data"];
Pues, el usuario debe de poner por ejemplo Pepito, pero igual puede poner
Código PHP:
<script>alert("xss injection");</script>
( que por cierto es lo de menos :D ) Esto es una entrada mala para tu codigo y la tienes que evitar la, es decir filtrar y comprobar la entrada. En el caso de un nombre $_POST["data"] debe de contener solo letras y si hay apellidos espacios. En caso de edad $_POST["age"] debe de ser integer etc.
Código PHP:
$age = (int)$_POST["age"];
preg_match("/^[a-zA-Z-\s]*/", $_POST["name"], $name);
echo "Hi, " . $name[0] . ". You are " . $age . " years old";
esto es un ejemplo. Otro seria:
Código PHP:
$age = (int)$_POST["age"];
$name = htmlspecialchars(trim(addslashes($_POST["name"])));
echo "Hi, " . $name[0] . ". You are " . $age . " years old";