Какие дыры в безопасности могут появляться на моем сайте, включая внешние изображения через тег img
и как их избежать?
В настоящее время я проверяю только изображение с расширением и mime-type
при отправке (которое можно изменить после URL
), а URL
очищается, прежде чем поместить его в атрибут src
.
Вероятно, существует разница между тем, кто находится под угрозой.
Если все, что вы делаете, это хранение URL-адресов, а не загрузка изображений на ваш сервер, то ваш сайт, вероятно, безопасен, и любой потенциальный риск для ваших пользователей, просматривающих ваш сайт.
По сути, вы доверяете надежности производителей браузеров. Все может быть хорошо, но если в каком-то браузере должно появиться отверстие безопасности в одном браузере, которое связано с неправильным анализом изображений, содержащих вредоносный код, то это ваши пользователи, которые в конечном итоге будут платить за него (вы можете найти интересный GIFAR ).
Все зависит от того, доверяете ли вы разработчикам браузера сделать безопасное программное обеспечение и доверяете ли вы своим пользователям не загружать URL-адреса на изображения, которые могут содержать эксплойты для определенных браузеров. То, что может быть безопасно сейчас, может быть небезопасным, – это следующий выпуск.
Первичные отверстия, которые могут быть открыты, – это те, где поврежденные изображения вызывают переполнение буфера в браузере, что позволяет выполнять произвольный код.
Если вы помещаете изображения только в <img>
не будет никаких уязвимостей, связанных с отправкой альтернативных типов MIME, но никогда не недооценивайте глупость некоторых разработчиков веб-браузера …
Ну, очевидно, вы не делаете никаких проверок данных, поэтому данные могут быть любыми (тип mime, сообщаемый удаленным сервером, не обязательно говорит правду). Кроме того, как вы сказали, данные на удаленном сервере можно изменить, так как вы никогда не смотрите на него после отправки.
Таким образом, если ссылка помещается в let, скажем, <img src = "…" />, то любая уязвимость, которую может иметь браузер в обработке изображений, может быть использована.
«Sanitizing» URL-адрес ничем не помогает: кто-то, отправляющий ссылку, указывающую на «плохой» образ, не собирается атаковать свой собственный сервер.