Предлагаемой вам дезинфекции недостаточно.
Злоумышленник может перенаправить на URL-адрес data:uri
, содержащий html / javascript в кодировке base64.Это позволит злоумышленнику выполнить произвольный код JavaScript.Например, этот фрагмент кода будет предупреждать 'xss' (в Firefox, Safari и Opera)
var data = 'data:text/html;base64,PHNjcmlwdD5hbGVydCgiWFNTIik8L3NjcmlwdD4=';
location.replace(data);
Кроме того, может быть возможно перенаправить на анонимный URL-адрес FTP или использовать какой-либо другой непонятный протокол.
Вместо внесения в черный список протоколов / ключевых слов используйте вместо этого подход белого списка.Поддерживайте список хороших URL в вашем коде JavaScript.Затем прочитайте идентификатор фрагмента и посмотрите, есть ли он в этом известном списке URL.Если это не так, остановите процесс.
В сфере безопасности белые списки всегда предпочтительнее черных.