android - origin - htaccess cors




Android Iframe SameOrigin su siti personalizzati (2)

Abbiamo un'applicazione Android che sta iframe il nostro sito Web nella loro applicazione. Tuttavia, per evitare il click jacking abbiamo la seguente direttiva nelle nostre configurazioni proxy.

Intestazione aggiungi X-FRAME-OPTIONS "SAMEORIGIN"

Questa è una strategia di condivisione delle risorse cross-source molto comune.

Sfortunatamente la Webview in un browser Android ha origine come file:// che è diverso dal dominio che usiamo. Ciò porta all'errore rifiutato di visualizzare le x-frame-options impostate su sameorigin .

Quali strategie (sul proxy o sul lato client) Posso utilizzare per consentire all'applicazione Android di interagire con il nostro sito (senza COMPLETAMENTE rimuovere sameorigin)?


Non pensare di poterlo fare. Poiché Chromium non vede Allow-From as feature [1] e Android fa molto affidamento sui framework Chromium per WebViews .

Immagino che i tuoi requisiti siano di bloccare i click jack basati su browser?

Dal momento che non puoi usare Allow-From . Potresti voler pensare a un approccio simile a quello descritto in questo talk di BlackHat [2], UI Redressing Attacks on Android Devices . Consiglierei di leggere l'intero pdf di cose davvero interessanti.

Consulta il 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


WebView ha un metodo loadDataWithBaseURL () . Puoi leggere il tuo file e passarlo attraverso l'origine di cui hai bisogno come URL di base.

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

Carica i dati dati in questa WebView, utilizzando baseUrl come URL di base per il contenuto. L'URL di base viene utilizzato sia per risolvere gli URL relativi sia per l'applicazione della stessa politica di origine di JavaScript.





same-origin-policy