我们有一个Android应用程序,可以将我们的网站组织到他们的应用程序中。但是为了防止点击劫持,我们在代理配置中有以下指令。
标题附加X-FRAME-OPTIONS "SAMEORIGIN"
这是一种非常常见的跨源资源共享策略。
不幸的是,Android浏览器中的Webview
的原点为file://
,与我们使用的域不同。这导致错误被拒绝显示x-frame-options
设置为sameorigin
。
什么策略(在代理或客户端)我可以使用允许Android应用程序与我们的站点交互(没有完全删除sameorigin)?
答案 0 :(得分:2)
不要以为你能做到这一点。由于Chromium没有将Allow-From
视为功能[1],因此Android严重依赖Chromium的WebViews
框架。
我猜你的要求是阻止基于浏览器的点击插件?
由于您无法使用Allow-From
。您可能想要考虑类似于BlackHat talk [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
答案 1 :(得分:2)
WebView有loadDataWithBaseURL()方法。您可以阅读您的文件,并将其作为基本网址以您需要的任何来源传递。
{{1}}
使用baseUrl作为内容的基本URL,将给定数据加载到此WebView中。基本URL既用于解析相对URL,也用于应用JavaScript的相同原始策略。