Это встроенный фильтр :
filter_var($url, FILTER_VALIDATE_URL);
Это вернет false
с вашим примером URL. Если бы это было действительно, это возвратило бы $url
. Пример:
glopes@nebm:~$ php -r "var_dump(filter_var('http://blah.com\"onclick=\"alert(document.cookie)', FILTER_VALIDATE_URL));"
bool(false)
В любом случае, решение для предотвращения XSS заключается в использовании htmlspecialchars
. Поскольку это атрибут, вы должны использовать ENT_QUOTES
:
htmlspecialchars($data, ENT_QUOTES);
Но вы также должны проверить URL-адрес, поскольку в противном случае пользователь может включить javascript:
-подобные «URL-адреса».