Framebreaker: Frame-Hijacking verhindern

Hi,
öffnet man ein HTML Dokument, das top.location... mit JS überschreibt, so geht das übergeordnete Dokument abhanden.
Wie kann sich das "äußere" davor schützen? Also wie stellt man sicher, dass ein im iFrame eingebundenes Objekt auch im iFrame bleibt?
Besten Dank

  1. zum Beispiel kann man das Problem nachvollziehen beim Versuch, http://guru-world.net/ in einem iFrame einzubinden.

    1. Hi,

      zum Beispiel kann man das Problem nachvollziehen beim Versuch, http://guru-world.net/ in einem iFrame einzubinden.

      Der Betreiber dieser Seite will also offenbar nicht, dass du das tust.

      MfG ChrisB

      --
      Light travels faster than sound - that's why most people appear bright until you hear them speak.
  2. moinmoin

    ähm... bin etwas begriffsstutzig... wie rum meinst du?

    du hast nen iFrame den du schützen willst?

    if (top.location != self.location) {  
    top.location = self.location.href  
    }
    

    oder du willst einen anderen iFrame bei dir einbinden und dessen *Schutz* umgehen?

    Gruß Krischi

    1. Moin Krischi,

      oder du willst einen anderen iFrame bei dir einbinden und dessen *Schutz* umgehen?

      Letzteres. Dachte eigentlich immer, dass das äußere Element mehr zu sagen hat und nicht einfach so überschrieben werden kann...

      1. »» oder du willst einen anderen iFrame bei dir einbinden und dessen *Schutz* umgehen?
        Letzteres.

        Dann Frage den Seitenbetreiber, der dir sicher gestattet hat, seine Inhalte in einem Schaufenster einzubinden, ob er für deine Domain eine Ausnahme definiert.

  3. Hallo,

    Hi,
    öffnet man ein HTML Dokument, das top.location... mit JS überschreibt, so
    geht das übergeordnete Dokument abhanden.

    ich denke, indem man dafür sorgt, daß die "eingebettete" Seite die top.location nicht überschreibt. Hat man keinen Zugriff auf diese eingebettete Seite, kann man ja denjenigen fragen, der das hat.

    Möchte derjenige das aber nicht, kann man nur mit den Schultern zucken.

    Chräcker

    --
    Erinnerungen?
    zu:]
  4. Und es geht doch...
    Allerdings ist dafür ein nicht unwesentlicher Aufwand notwendig (Proxy Prinzip). Wie es geht:
    Du holst dir mittels einer serverseitigen Sprache (Perl, PHP, etc) die einzubettende Seite(n) als Beispiel von http://example.com ab.
    Dann führst sie durch hinzufügen von "top=self" im Header in die Irre. Weiterhin passt du den so erhaltenen Code mittels ServerSide includes in deine Seite ein.
    Folgende Probleme sind zu bewältigen:

    1. du müßtest alle Anbindungen innerhalb der Fremdseite, die auf lokale Quellen gerichtet waren, auf den Quellserver "umbiegen", also ein <img src="./imgs/example.png" /> muß zu <img src="http://www.example.com/imgs/example.png" recodiert werden.
    2. du mußt den wütenden Seitenbetreiber aushalten, wenn er merkt, was du tust - insbesondere wenn du deine Seite online stellst, scheint mir das wenig ratsam und rechtlich problematisch!

    Trotzdem der Tip, denn es gibt ja durchaus Fälle, in denen mir dein Vorgehen OK scheint - z.B. du hast nen localhost server laufen, weil du dir (nur für dich) eine Seite erstellen willst, die deine Lieblingsseiten in IFRAMES zusammenfasst...

    Grüße,
    Richard