No matter how good a black list is there will always be a way to
circumvent it. JavaScript is especially good at letting attackers hide
their payloads using various characters. Billy Hoffman demonstrated
this very clearly in his book Ajax Security where he shows how to encode
payloads using whitespace and tabs (p.115-116). A better approach,
such as a whitelist, is needed to provide holistic protection for web
applications.