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