Нет, я бы этим не пользовался.Существует множество различных атак, которые зависят от контекста, в который вставляются данные.Одна функция не будет охватывать их всех.Если вы внимательно посмотрите, на самом деле есть только четыре теста:
// Set the patterns we'll test against
$patterns = array(
// Match any attribute starting with "on" or xmlns
'#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>?#iUu',
// Match javascript:, livescript:, vbscript: and mocha: protocols
'!((java|live|vb)script|mocha):(\w)*!iUu',
'#-moz-binding[\x00-\x20]*:#u',
// Match style attributes
'#(<[^>]+[\x00-\x20\"\'\/])style=[^>]*>?#iUu',
// Match unneeded tags
'#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>?#i'
);
Ничего другого не проверено.Помимо атак, которые эти тесты не обнаруживают (ложно-отрицательные), он также может ошибочно сообщать некоторые входные данные как атаку (ложно-положительные).
Поэтому вместо того, чтобы пытаться обнаруживать атаки XSS, просто убедитесь, что вы используете правильныедезинфицировать.