Межсайтовый скриптинг из изображения - PullRequest
6 голосов
/ 27 октября 2008

У меня на сайте есть текстовый редактор, который я пытаюсь защитить от атак XSS. Я думаю, что со всем почти справился, но я все еще не уверен, что делать с изображениями. Прямо сейчас я использую следующее регулярное выражение для проверки URL-адресов изображений, которые, как я предполагаю, заблокируют встроенные атаки XSS на JavaScript:

"https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+"

В чем я не уверен, так это в том, что это открывает мне возможность атак XSS с удаленного образа. Является ли ссылка на внешний образ серьезной угрозой безопасности?

Единственное, о чем я могу думать, это то, что введенный URL ссылается на ресурс, который возвращает «text/javascript» в качестве MIME-типа вместо какого-либо изображения, и этот javascript выполняется.

Это возможно? Есть ли какая-либо другая угроза безопасности, которую я должен рассмотреть?

Ответы [ 3 ]

4 голосов
/ 27 октября 2008

Еще одна проблема, о которой стоит беспокоиться, это то, что вы можете легко вставлять код PHP в изображение и загружать его большую часть времени. Единственное, что может затем сделать атака, - это найти способ включить изображение. (Будет выполняться только PHP-код, остальное просто повторяется). Проверьте, что MIME-тип не поможет вам в этом, потому что злоумышленник может легко загрузить изображение с правильными первыми несколькими байтами, за которым следует произвольный код PHP. (То же самое относится и к HTML и коду Javascript).

2 голосов
/ 28 октября 2008

Если конечный зритель находится в защищенной паролем области, а ваше приложение содержит URL-адреса, которые инициируют действия на основе запросов GET, вы можете сделать запрос от имени пользователя.

Примеры:

1 голос
/ 27 октября 2008

В этом случае посмотрите на контекст вокруг него: пользователи предоставляют только URL-адрес? В этом случае хорошо просто проверить семантику URL-адресов и MIME-тип. Если пользователь также получает какие-то теги ввода, вам нужно убедиться, что они не могут манипулировать, чтобы делать что-либо другое, кроме отображения изображений.

...