Безопасность Opera и сайты, которые разрешают как общедоступные, так и частные IP-адреса

У меня есть приложение Rails 3.0.x, которое отображает страницу, содержащую веб-плеер Yahoo. Плеер воспроизводит аудиофайл, обслуживаемый приложением Rails, контроллер, который обрабатывает запрос файла, использует send_data для отправки mp3-файла:

send_data content, :filename=>dsLabel, :type=>mimeType, :disposition => 'attachment'

(*) Я также пробовал встроенное расположение

Это отлично работает в Safari, IE и FF. Однако в Opera вы нажимаете кнопку воспроизведения, и звук никогда не воспроизводится, код Yahoo минимизирован, и немного сложно точно сказать, что не так, но я пришел к выводу, что это не проблема javascript, насколько я могу судить.

Одна вещь, которую следует отметить в отношении сайта, заключается в том, что когда я локально нахожусь в той же сети на работе, наш DNS-сервер разрешает сайту 10.x.x.x IP-адрес локальной сети, в противном случае он разрешается в общедоступный IP-адрес.

В Opera, если я открою «Настройки» и добавлю имя хоста под Trusted Websites->Secure Internal Hosts, а затем перезагружу страницу, звук будет воспроизводиться нормально. Если я изменю свой DNS на OpenDNS, он также будет работать нормально. Кажется, я столкнулся с проблемой политики безопасности Opera, которую не совсем понимаю.

Мне кажется, что хотя внутренне мой хост разрешается в IP-адрес локальной сети, после загрузки Opera считает, что это общедоступный сайт, и поэтому MP3 не загружается, однако он также разрешается в IP-адрес локальной сети, поэтому он не похож на общедоступный /частная дивергенция.

Я надеялся, что кто-то в сообществе Stackoverflow, лучше разбирающийся в безопасности Opera, сможет объяснить политику, которую я здесь применяю.


person Mike K.    schedule 29.02.2012    source источник


Ответы (1)


Возможно, вы столкнулись с политикой «закрепления типа сети». По сути, Opera попытается вспомнить, был ли какой-либо сайт сначала разрешен к общедоступному или частному IP-адресу.

Эта политика предназначена для защиты от атак, когда сайт сначала отправляет вам некоторый код, а затем повторно настраивает себя, заявляя, что его IP-адрес является внутренним. Скажем, Attack.example.com обслуживает страницу, которая ссылается на Attack.example.com/intranet/menu.js, позже, когда вы повторно посещаете Attack.example.com, делает вид, что его IP-адрес 10.0.0.1, где работает ваша интрасеть, и ваша интрасеть также ссылается на файл /intranet/menu.js. Если теперь menu.js запускается из кеша, он может делать все, что захочет, на сайте интрасети. Атака завершена.

Следовательно, Opera может применять политику безопасности не в соответствии с тем, к какому IP-адресу вы в данный момент подключаетесь, а в соответствии с тем, какой IP-адрес впервые увидел разрешение имени хоста. Извините, что это довольно неясная часть состояния, но вы находитесь в довольно небольшом меньшинстве, когда у вас есть какое-то имя хоста, которое может разрешаться либо в частный, либо в публичный адрес ;-)

person hallvors    schedule 24.07.2012