Предотвращение вредоносных внешних скриптов - PullRequest
2 голосов
/ 12 мая 2011

В настоящее время я занимаюсь разработкой игры с использованием PHP и MySql. Я бы хотел, чтобы пользователи могли показывать изображения с помощью парсера BBCode ( NBBC ), но мне сообщили о потенциальной проблеме безопасности.

Позвольте мне объяснить:

  1. Пользователь вводит URL-адрес в текстовое поле с помощью кода, такого как [img] http://example.com/image1.png[/img]

  2. Затем пользователь может отредактировать image1.png на внешнем сервере в сценарий на стороне сервера, который хранит информацию о пользователе (ip ect) и т. Д.

  3. Пользователь использует информацию, чтобы делать потенциально неприятные вещи!

Мой вопрос: как мы можем предотвратить это и защитить детали пользователей при детализации с помощью внешних источников?

Очевидный ответ - разрешить загрузку только на ваш сайт, но в этом случае это не кажется слишком практичным.

Ценю любую помощь!

Ответы [ 6 ]

5 голосов
/ 12 мая 2011

На самом деле вы можете изменить

[img]http://example.com/image1.png[/img] 

на что-то вроде:

<img src="http://yourserver/proxy.blah?url=example.com/image1.png" />

, чтобы ваш прокси-сервер загружал изображение вместо пользователя.

3 голосов
/ 12 мая 2011

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

Любое тело может использовать .htaccess / ForceType для изменения типа выполнения любого файла, получить информацию о пользователе и предоставить изображение в ответ.

Я написал простой скрипт для вращения изображений в подписи на форуме пользователей много месяцев назад, и он демонстрирует этот процесс: http://blog.simonholywell.com/post/374221718/flickering-images

2 голосов
/ 01 октября 2011

Несмотря на ответы о том, что это не проблема, это так. Существует несколько способов создать вредоносный файл образа, который выполняется на ПК пользователя. Вы также не можете контролировать, будет ли браузер пользователя учитывать тип MIME, возвращаемый сторонним сервером, чтобы он мог возвращать исполняемый файл вместо изображения, даже если вы можете разрешить только ссылки на файлы с расширениями изображений (.png,. gif, .jpg и т. д.). Это взаимодействие полностью происходит между вашим пользователем и сторонним сервером, но поскольку оно встроено в вашу страницу, пользовательский опыт будет заключаться в том, что любая инфекция возникла на вашем сайте.

Но даже если предположить, что удаленный сервер отправляет только изображение, вы не знаете, является ли изображение даже безопасным. См:
Уязвимость в изображении GIFAR
Зараженные файлы .png
Вредоносный код скрывается в jpgs

Загрузка изображений на ваш сайт также не является прогулкой в ​​парке, , как обсуждалось здесь .

2 голосов
/ 12 мая 2011

Нет даже необходимости превращать это изображение в скрипт. Журнал доступа удаленного сервера будет захватывать запрос изображения, как и любой другой запрос к серверу. IP, браузер UA, реферер и т.д ...

Если вы разрешаете внешние ресурсы в предоставленных пользователем данных, вы не имеете никакого контроля над тем, как эти ресурсы обрабатываются. Если это изображение предназначено для Аватара (скажем), то ничто не говорит о том, что удаленный пользователь не может изначально сделать своего аватара щенком, а затем изменить его на что-то неприятное, после того, как исходное изображение щенка будет одобрено.

Ничто не говорит о том, что пользователь не может указать URL-адрес аватара на сервер, который им не принадлежит, в этом случае оператор другого сервера будет раздражен кражей пропускной способности и превратит изображение аватара в изображение типа Goatse чтобы вернуться в полосу пропускания вор.

Короче говоря, если вы разрешите внешние ресурсы, вы потеряете контроль. Храните все в доме, где вы можете следить за ним.

2 голосов
/ 12 мая 2011

Вы не.

Единственная информация, которую злоумышленник сможет получить, - это IP-адрес пользователя и URI-адрес реферера, поэтому вам нужно только убедиться, что им не передается ничего ценного (например, идентификатор сеанса, который вы можете привязать к IP-адресу или перевод через куки).

0 голосов
/ 12 мая 2011

Пользователь использует информацию, чтобы делать потенциально неприятные вещи!

Вы слишком параноидальны здесь.Если пользователь уязвим из-за того, что его IP-адрес известен, его компьютер уже заражен сотнями различных вредоносных программ.

...