межкадровый сценарий с <script src = .... для поиска кода состояния сайта - проблема безопасности? - PullRequest
1 голос
/ 01 марта 2012

у нас есть сайт с Iframes, указывающими на динамические URL-адреса (по данным пользователя).В случае 404/500 или любой другой ошибки мы хотим заменить источник Iframe другим дружественным другим URL-адресом.Для этого мы можем использовать событие onerror для определения проблем с динамическими сайтами.(затем, в случае возникновения проблемы, замените URL-адрес iframe). Это также работает для междоменных URL-адресов, однако возможен случай, когда динамический URL-адрес может быть вредоносным, и возникает такая проблема безопасности, когда вредоносный код будет выполняться в том же фреймедомен нашего сайта.

Это предположение правильно?Есть ли решение для этого?Любые другие предложения?

Спасибо, Тал

Ответы [ 3 ]

1 голос
/ 04 марта 2012

у нас есть сайт с Iframes, указывающими на динамические URL-адреса (при вводе пользователем).В случае 404/500 или любой другой ошибки мы хотим заменить источник Iframe другим дружественным другим URL-адресом.

Так что, похоже, вы создаете своего рода «браузер вweb page. "

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

Да, за исключением немногих вещей , имеющих события ошибки.Я предполагаю, что вы знаете об этом из ваших комментариев к другим ответам.Если я вас правильно понимаю, вы говорите об использовании фиктивного элемента script для первой загрузки URL-адреса (как сценария, даже если это не скрипт) и определения допустимости URL-адреса с использованием onload/ onerror обработчики для элемента script (onerror не будет запускаться при ошибке сценария, только при сетевой ошибке).

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

Верно ли это предположение?

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

Есть ли какое-либо решение для этого?

Aпростой обходной путь может заключаться в том, чтобы сделать что-то наподобие того, что делает jsfiddle.net ... иметь отдельный поддомен, выступающий в качестве «брандмауэра» между сторонним контентом и вашим реальным доменом.

Есть ли другие предложения?

Хак с предзагрузкой скрипта - это просто хак.Он незаконно присваивает тег script и делает ненужные запросы.Я бы, вероятно, изучил использование XHR для запуска HEAD-запроса или легкое прокси на стороне сервера.

1 голос
/ 01 марта 2012

Да, если вы используете тег <script> для встраивания удаленного JS-файла, у вас есть проблема с безопасностью, поскольку код будет выполняться в контексте вашей страницы.

Единственная обходная идеяна ум приходит серверный запрос к ресурсу и анализ заголовков ответа.Однако это может отличаться от запроса на стороне клиента, поскольку вызов будет поступать с сервера, поэтому у него будет другой IP-адрес, другие файлы cookie и т. Д.

0 голосов
/ 02 марта 2012

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

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

...