2016-01-12 7 views
5

Wir haben eine Android-Anwendung, die iframe-unsere Website in ihre Anwendung ist. Um Klick-Jacking zu verhindern, haben wir die folgende Anweisung in unseren Proxy-Konfigurationen.Android Iframe SameOrigin auf benutzerdefinierten Websites

Kopf anhängen X-FRAME-OPTIONS "SAMEORIGIN"

Dies ist eine sehr häufige Strategie Cross-Origin Resource Sharing.

Leider hat die Webview in einem Android-Browser den Ursprung als file://, die anders ist als die Domäne, die wir verwenden. Dies führt dazu, dass der Fehler x-frame-options auf sameorigin nicht angezeigt wird.

Welche Strategien (entweder auf der Proxy-oder der Client-Seite) Kann ich verwenden, um die Android-Anwendung mit unserer Website interagieren zu ermöglichen (ohne COMPLETEY selforigin entfernen)?

Antwort

2

Denken Sie nicht, dass Sie das tun können. Seit Chromium sieht Allow-From als Feature [1] und Android verlässt sich stark auf Chromium-Frameworks für WebViews.

Ich vermute Ihre Anforderungen sind browserbasierte Click Jackings zu blockieren?

Da können Sie Allow-From nicht verwenden. Vielleicht möchten Sie über einen ähnlichen Ansatz nachdenken wie in diesem BlackHat Talk [2], UI Redressing Attacks on Android Devices. Ich würde empfehlen, das gesamte pdf wirklich interessante Sachen zu lesen.

Auschecken Chapter 5 MITIGATION TECHNIQUES, Section 1 Browser-Based UI Redressing.

<styleid=”antiClickjack”> 
    body{display:none!important;} 
</style> 
<scripttype=”text/javascript”> 
    if(self===top){ 
     varantiClickjack=document. 
     getElementById(”antiClickjack”); 
     antiClickjack.parentNode.removeChild(antiClickjack); 
    }else{ 
     top.location=self.location; 
    } 
</script> 

[1] https://code.google.com/p/chromium/issues/detail?id=129139#c20
[2] https://media.blackhat.com/ad-12/Niemietz/bh-ad-12-androidmarcus_niemietz-WP.pdf

2

Die WebView hat eine loadDataWithBaseURL() Methode. Sie könnten Ihre Datei einlesen und diese mit der von Ihnen benötigten Herkunft als Basis-URL übergeben.

public void loadDataWithBaseURL(String baseUrl, 
           String data, 
           String mimeType, 
           String encoding, 
           String historyUrl) 

Lädt die angegebenen Daten in diese WebView, baseUrl Verwendung als Basis-URL für den Inhalt. Die Basis-URL wird sowohl zum Auflösen relativer URLs als auch zum Anwenden der gleichen Herkunftsrichtlinien von JavaScript verwendet.