JavaScript HTTPS to HTTP iFrame Секретный вопрос - PullRequest
2 голосов
/ 29 июня 2011

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

Вот что у нас есть.

Вы начинаете на странице HTTP, которая при нажатии на ссылку открывает модальное окно.При нажатии на первую ссылку со страницы HTTP будет повторно заполнено модальное окно iFrame, которое ссылается на страницу HTTPS.Поскольку я не могу заставить HTTPS общаться со страницей HTTP, я использую настройку document.location на странице iframe HTTPS, чтобы сделать страницу успеха HTTP.Затем страница HTTP возвращается к родительскому окну.

Итак:

HTTP (щелчок) -> Открывает iFrame в HTTPS -> Безопасный вход через HTTPS при успехе document.location -> успех HTTPpage -> window.parent.success_msg(deferred); вызовы родительского окна.

Пока что он отлично работает во всех браузерах ... еще не тестировал IE, но я хотел убедиться, что это не было ужасной практикой раньшеЯ представляю это.

Спасибо!

1 Ответ

2 голосов
/ 29 июня 2011

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

Используя HTTPS iframe, как этот, вы не позволяете браузеру отображать обычные символы безопасности: блокировку, зеленую / синюю полосу и, что более важно, адрес сайта (злоумышленник может просто поставить собственную ссылку на www.some-other-site.example вместо сайта с отступом; www.some-other-site.example может иметь действительный сертификат, и браузер не будет выдавать никаких предупреждений).

Эта практика особенно плоха, когда HTTPS iframe внутри страницы, обслуживаемой по HTTP, но она также не годится, когда содержащая страница обслуживается по HTTPS. Вы также не можете легко проверить подлинность сервера, обслуживающего оформленную страницу. (К сожалению, это (или, по крайней мере, так) было рекомендовано 3-D Secure ...)

Если вы хотите выполнить аутентификацию по HTTPS, переключите полную страницу на HTTPS, а затем вернитесь, предоставив незащищенный файл cookie. Конечно, это не очень безопасно (кто-то может перехватить этот маркер безопасности, как популяризируется FireSheep), но это лучше, если, по крайней мере, пользователь сможет проверить, является ли страница, на которой он вводит свои учетные данные, законной один. (Это тоже нужно делать осторожно, см. этот вопрос .)

Наилучший способ - использовать HTTPS без фреймов после аутентификации, если вы можете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...