Unfortunately css attacks are more complicated that that. As is generally
the case with input validation, it's flawed to try to come up with a list of
*bad* things, and filter them out - rather, you should come up with a list
of things that are ok, and *only allow* those...

IE, if i were validating a name, i wouldn't do this:

if string contains < then reject
if string contains > then reject
...
... etc

I'd do this:

if(!eregi("^[a-z0-9 -]+$", $name)){
  // bail out with an informative error message
  // i can't imagine why a name would have numbers in it but nevermind ;)
}
else{
  // trust the input
}

That way, css is made far more difficult. of course, for situations where
more flexibility is required, you can replace < > with their encoded
equivalents and suchlike, but that's not foolproof. the first solution is
generally quicker and more watertight.

Harry M

Reply via email to