iFrame - brak możliwości modyfikacji. Jak rozwiązać problem?

iFrame - brak możliwości modyfikacji. Jak rozwiązać problem?
KO
  • Rejestracja:około 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:125
0

Cześć!

Borykam się z pewnym problemem. Muszę wprowadzić kilka modyfikacji w formularzu który jest dodany do strony za pomocą skryptu. Skrypt ten dodaje formularz w ramce iFrame. Ramka pochodzi z innej domeny. Każda próba modyfikacji niestety kończy się błędem "Blocked a frame with origin from accessing a cross-origin frame". Czy ktoś może wie jak sobie poradzić z tego typu problemem? Dokładnie na czym mi zależy to możliwość dodania do "<body>" ramki kilku skryptów modyfikujących wygląd i działania formularza. Z góry dziękuję za pomoc.

WY
WY
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 4 lata
  • Postów:64
3

Zabezpieczenie przed scamem, wyobraź sobie, że ktoś wchodzi do ciebie na stronę ty mu wyświetlasz facebooka, wywołujesz tam skrypt js i gościowi się pojawiają na tablicy jakieś duperele.

Albo centrujesz iframe w taki sposób, że jak gdzieś kliknie to kliknie na innej stronie przez tego iframe.

Blokuje się to tak, że się ustawia w nagłówkach http, żeby przeglądarka tej strony nie ładowała przez co przeglądarka, która chroni użytkownika widzi, że nie powinna czegoś udostępniać tego nie udostępnia.
Dla bezpieczeństwa, a ty nie możesz ingerować w cudzą przeglądarkę.

RG
  • Rejestracja:około 5 lat
  • Ostatnio:około godziny
  • Lokalizacja:Sardine, Italy
  • Postów:187
0

@Krispi One: A potem ma zostać tam czy dołączona do Twojej strony? Jak do Twojej strony to może zwyczajne pobranie i modyfikacja? Ale pewnie chcesz to wykonać tam? ;-D

KO
Dokładnie to zależy mi na takim rozwiązaniu, ze pobieram coś ze swojej strony np. jakiś tekst. i później tą zmienną z tekstem przerzucam do iFrame dodając tekst do inputa znajdującego się właśnie w tej ramce ;)
RG
Ale ten iFrame nie jest na Twojej stronie?
KO
Nie wiem czy dobrze rozumiem, ale iFrame pochodzi ze strony dostawcy systemu CRM, aczkolwiek iFrame posiadam "wstrzyknięty" na swojej stronie za pomocą skryptu który udostępnia system CRM. Ogólnie jak próbuje coś zrobić w konsoli z tą ramką, to konsola zmienia adres na ten z którego pochodzi ramka, bo z poziomu swojej strony nie mam do niego dostępu. Ramkę posiadam u siebie, ale fizycznie pochodzi ona z innej strony. Największym ograniczeniem jest to że nie mogę bezpośrednio modyfikować ramki, bo nie mam do niej dostępu nawet z poziomu panelu CRM.
Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
5

Tego nie da się zrobić. Nawet kombinowanie z ustawieniami serwera strony zawierającego ramkę nic nie pomoże.

Jeżeli jednak strona z formularzem również należy do ciebie, to możesz przesyłać komunikaty pomiędzy właściwą stroną i stroną imieszczoną w iframe i w reakcji na nie podejmować określone działania. Patrz:

postMessage
window.addEventListener('message', ...


KO
  • Rejestracja:około 7 lat
  • Ostatnio:około 2 miesiące
  • Postów:125
0

Dziękuje bardzo za bardzo szybkie odpowiedzi. W kwestii formularza, to pochodzi on z serwisu oferującego systemy CRM, każdy użytkownik dostaje dostęp do formularza, który można jedynie zmieniać pod względem wyglądu. Formularz służy do dodawania nowych informacji właśnie do tego systemu CRM. Chciałem go zaimplementować na stronę, i dostosować trochę pod siebie, ponieważ formularz znajduje się na wielu podstronach i dobrze by było np. przekazywać w polu opisu jakieś informacje typu z jakiej podstrony użytkownik wysłał zapytanie, aczkolwiek jeżeli by to bardzo mogło naruszyć bezpieczeństwo to też nie będę kombinował. Dziękuję za odpowiedzi, postaram się jeszcze przyjrzeć opcji "message", ale pewnie gdyby dołożył tego typu modyfikacje to istnieje niebezpieczeństwo że ktoś pogrzebie w kodzie i będzie chciał porobić cuda w systemie CRM?

Freja Draco
Freja Draco
  • Rejestracja:około 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
0

Dlatego przed przetworzeniem poleceń otrzymanych przez postMessage trzeba sprawdzać, czy pochodzą z twoich własnych domen.
Same komunikaty też ktoś może sfałszować, ale na swoim własnym komputerze może i tak zrobić cokolwiek z uruchomionym na stronie JS-em, więc nie jest to jakieś specjalne zagrożenie.


KO
Czyli jak dobrze rozumiem, jeżeli nie mam możliwości modyfikacji kodu JavaScript wewnątrz ramki "iFrame", to funkcja message też za wiele nie pomoże, bo nie będę mógł odebrać wiadomości którą wysyłam ze swojej strony?
Freja Draco
Freja Draco
@Krispi One: Dobrze rozumiesz.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.