iframe защищенная форма SSL на сайте без SSL - PullRequest
9 голосов
/ 16 марта 2010

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

Они хотели бы, чтобы форма платежа присутствовала в iframe.

Каковы, если таковые имеются, последствия при размещении на веб-сайте SSL на веб-сайте без SSL, когда речь идет об обработке платежей?

Ответы [ 2 ]

6 голосов
/ 25 января 2013

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

Атака «человек посередине» маловероятна, поскольку все веб-браузеры, как классические, так и современные, запрещают любой доступ к содержимому iframe через Javascript, поскольку iframe использует другой протокол и / или доменное имя. Единственный способ связаться с iframe на этом этапе - использовать функцию postMessage, реализованную в современных веб-браузерах, которая позволяет междоменную связь через Javascript. Даже если вы используете postMessage, в iframe должен быть включен код, который прослушивает события postMessage, поступающие из родительского окна, что в случае разработки формы оплаты в iframe только родительское окно должно будет прослушивать событие после платеж обработан. Таким образом, крайне маловероятно, что атака «человек посередине» произойдет, если вы продолжите общение через postMessage в одностороннем порядке (iframe выполняет только postMessage, а parent прослушивает сообщения).

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

5 голосов
/ 16 марта 2010

Браузер ваших пользователей выдаст им предупреждения безопасности, которые в основном говорят, что это небезопасный сценарий. Например, атака «человек посередине» может внедрить javascript в вашу страницу без SSL, и теперь вы потенциально скомпрометированы.

В этом случае подходящим способом для этого является перенаправление всплывающей или плоской страницы. Как вы, наверное, знаете, вы хотите, чтобы 100% контента в вашем браузере размещалось по SSL в таком сценарии. В противном случае вам просто не гарантирована защита. Вот причина этих предупреждений.

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