2012-02-14 9 views
57

Я занимаюсь разработкой приложения для клиента, который будет иметь сертификат SSL и будет обслуживаться под https. Однако для интеграции со своим существующим сайтом они хотят обеспечить их навигацию внутри iframe.Небезопасный контент в iframe на защищенной странице

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

Таким образом, я хотел бы знать, будет ли проблема включать небезопасный контент внутри iframe, размещенный на защищенной странице, и если да, то каковы будут проблемы?

В идеале, если это не очень хорошая идея (и у меня есть сильное чувство, что это не так), я должен уметь объяснить это клиенту.

+0

Вы говорите об использовании своей главной страницы в простом HTTP и встраивании iframe, использующего HTTPS? – Bruno

+4

Нет, напротив - главная страница HTTPS, iframe - простой HTTP. Я отредактировал вопрос, чтобы сделать это более ясным. – moogal

+1

Об этом уже есть [количество вопросов] (http://stackoverflow.com/search?q=https+iframe). В сортировке это плохая идея, потому что пользователи не смогут узнать, какая часть страницы является безопасной, а какая нет. – Bruno

ответ

22

Если страница осуществляется доступ с помощью https://www.example.com/main/index.jsp (SSL), то ваш браузер будет жаловаться на «Эта страница содержит как безопасные, так и небезопасные элементы», если есть какие-либо ресурсы в HTML-коде, на которые ссылаются с http:// (без SSL) , Это включает iframes.

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

<iframe src="/app/navigation.jsp" /> 

Из Вашего вопроса это звучит как страницы навигации в настоящее время подается от отдельного хозяина, и вы вынуждены использовать что-то вроде этого

<iframe src="http://otherserver.example.com/app/navigation.jsp" /> 

, который, конечно, вызывает сообщение «небезопасное содержание» в вашем браузере.

Ваши единственные решения либо

  1. реализовать SSL на сервере держа вашу страницу навигации, так что вы можете использовать https:// для справки Iframe или

  2. движение навигационного приложения к одному серверу поэтому вы можете использовать относительный URL-адрес.

Лично я не могу понять, почему ваша навигация будет на другой хост, потому что тогда вы собираетесь получить вопросы создания сценариев междоменного JavaScript (если некоторые фанки JSONP не участвуют).

+15

Интеграция с третья сторона, где вы не можете запустить свой код, является хорошим примером того, когда вам нужен лучший вариант, чем этот. – freyley

+2

Не подходит ли подход 'src ="/app/navigation.jsp "', чтобы содержимое iframe было доступно под HTTPS? Однако, согласно OP, iframe имеет простой HTTP. – KajMagnus

+0

еще один пример: если вы хотите разрешить пользователям произвольный URL-адрес iframe. Например, на сайте дизайна сайта. – Thayne

35

Если ваша страница http, то она позволяет iframe с содержанием https.

Но если ваша страница https, она не разрешает содержание HTTP.

Позволяет установить следующие возможности.

page - iframe - status 

http - http - allowed 
http - https - allowed 
https- http - not allowed 
https- https - allowed 
+3

https - https - разрешено - подтверждено на [sc2vault.com] (http://www.sc2vault.com/) – bradleygsmith

+3

https - https - небезопасные скрипты - не разрешено – coderek

+3

https - https - inscure images - allowed – coderek

-1

Попробуйте удалить Http: символы в значении атрибута SRC как так:

<iframe src="//example.com/thefile.htm"></iframe> 

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

+14

это не решит проблему. он просто сообщает браузеру «идти вперед и использовать любой протокол, который вы использовали для доступа к этой странице». в этом случае он эквивалентен «https: //example.com ...», который не решает проблему example.com, доступную только через http: –

+1

. Используя этот метод, каждый раз решайте мою проблему в каждом браузере, когда этот вид обходного пути требуется timearilly – bastien

+0

Как заметил @RobertLevy, это не «решает» проблему. Это действительно хорошая практика и лучший способ использовать любой протокол, который использует родитель. Это, конечно, работает только, если соответствующий ресурс также поддерживает 'https' и' http' – nuts

Смежные вопросы