[我们有一个android应用程序,它将我们的网站内嵌到其应用程序中。但是,为防止点击千斤顶,我们在代理配置中使用了以下指令。
标题附加X-FRAME-OPTIONS "SAMEORIGIN"
这是非常普遍的跨域资源共享策略。
[不幸的是,Android浏览器中的Webview
的来源为file://
,与我们使用的域不同。这导致拒绝将错误显示x-frame-options
设置为sameorigin
。
[我可以采用哪些策略(在代理或客户端上)允许android应用程序与我们的网站进行交互(而无需完全删除sameorigin)?
不要以为你可以做到。由于Chromium并未将Allow-From
视为功能[1],因此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
WebView具有loadDataWithBaseURL()方法。您可以读入文件,并将所需的任何来源作为基本URL传递给它。
public void loadDataWithBaseURL(String baseUrl,
String data,
String mimeType,
String encoding,
String historyUrl)
使用baseUrl作为内容的基本URL,将给定的数据加载到此WebView中。基本URL既用于解析相对URL,又在应用JavaScript的相同原始策略时使用。