Логика изначально не правильная. Загрузить можно что угодно, но нужно запретить исполнение файла вашим сервером. На самом деле исполнение зловреда на сервере достаточно редкое явление, если только вы не любите подключать счетчики от третьих лиц к себе в страницы через include с левого URL и если вы не любите размещать загруженные файлы с файлами вашего движка в одном месте.
Также под статичные файлы желательно завести отдельный домен (желательно 2ого уровня) и не принимать файлы, content-type которых вы не сможете распознать (например по расширению). Это нужно не для вас, а для ваших посетителей. Тогда даже если вы пропустите <script src="/url/to/image.png">
, то браузер при взгляде на заголовок Content-type = "image/png" не станет выполнять скрипт (убедитесь, что ваш сервер всегда высылает Content-type). Ну и наконец, если все пошло не так и скрипт все таки выполнился у клиента, то размещение на отдельной домене не позволит украсть куку с сессией. Впрочем позволит, если вы размещаете куки на *.domain.com, а статику на static.domain.com. Безопасность это вообще обширная тема.