Да. Существует множество способов внедрения вредоносного кода на ваш сайт.
В других ответах уже упоминались все наиболее очевидные из них, но есть много гораздо более тонких способов получить доступ, и если вы собираетесь принимать пользовательский HTML-код, вам нужно знать о них все, потому что хакеры не просто пробуют очевидные вещи, а затем сдаются.
Вам необходимо проверить все атрибуты обработки событий - не только onclick
, но и все: onfocus
, onload
, даже onerror
и onscroll
могут быть взломаны.
Но что более важно, вам нужно остерегаться взломов, которые предназначены для того, чтобы пройти проверку. Например, используя неработающий HTML, чтобы сбить ваш парсер с мысли, что он безопасен:
<!--<img src="--><img src=fakeimageurl onerror=MaliciousCode();//">
или
<style><img src="</style><img src=fakeimageurl onerror=DoSomethingNasty();//">
или
<b <script>ReallySneakyJavascript();</script>0
Все это может легко проскочить через валидатор.
И не забывайте, что настоящий взлом, вероятно, будет более запутанным, чем этот. Они сделают все возможное, чтобы вам было трудно его определить, или чтобы понять, что он делает, вы его заметите.
В заключение я порекомендую этот сайт: http://html5sec.org/, в котором есть сведения о большом количестве векторов атак, о большинстве из которых я бы точно не подумал. (примеры выше всех есть в списке)