Безопасность Opera и сайты, которые разрешают как публичные, так и частные IP-адреса. - PullRequest
0 голосов
/ 29 февраля 2012

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

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

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

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

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

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

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

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

1 Ответ

2 голосов
/ 24 июля 2012

Возможно, вы столкнулись с политикой «закрепления типа сети». По сути, 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-адресу она впервые подключилась. Извините, что это довольно непонятный кусок состояния, но вы находитесь в довольно небольшом меньшинстве, когда у вас есть какое-то имя хоста, которое может преобразоваться в частный или публичный адрес; -)

...