2016-01-12 3 views
5

Googleのウェブサイトをアプリケーションに組み込むアンドロイドアプリケーションがあります。しかし、クリックジャッキを防ぐために、私たちはプロキシ設定で次のような指示をしています。Android iframe SameOriginカスタムサイト

ヘッダーこれは非常に一般的なクロスオリジンリソースの共有戦略ですX-FRAME-OPTIONS "SAMEORIGIN"

追加します。

残念ながら、アンドロイドブラウザのWebviewは、使用しているドメインとは異なるfile://という起源を持っています。これにより、x-frame-optionssameoriginに設定することを拒否されました。

どのような戦略(プロキシまたはクライアント側で)私はアンドロイドアプリケーションが私たちのサイトとやりとりできるようにすることができますか?(完全にsameoriginを削除しないで)

答えて

2

あなたはそうすることはできないと思います。 Chromiumは機能[1]としてAllow-Fromを表示しないため、AndroidはChromiumのフレームワークWebViewsに大きく依存しています。

あなたの要件はブラウザベースのクリックジャッキをブロックすることだと思いますか?

Allow-Fromは使用できません。このBlackHatのトーク[2]、UI Redressing Attacks on Android Devicesで概説されているのと同様のアプローチについて考えてみてください。私はpdf全体を本当に興味深いものを読むことをお勧めします。

チェックアウト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

のWebViewはloadDataWithBaseURL()方法を有しています。あなたはあなたのファイルを読むことができ、ベースURLとして必要なあらゆる起源でそれを渡すことができます。

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

コンテンツのベースURLとしてbaseUrlにを使用して、このWebViewのに与えられたデータをロードします。ベースURLは、相対URLを解決するため、およびJavaScriptの同じ起点ポリシーを適用する際に使用されます。

関連する問題