自定义网站上的Android Iframe SameOrigin

问题描述 投票:5回答:2

[我们有一个android应用程序,它将我们的网站内嵌到其应用程序中。但是,为防止点击千斤顶,我们在代理配置中使用了以下指令。

标题附加X-FRAME-OPTIONS "SAMEORIGIN"

这是非常普遍的跨域资源共享策略。

[不幸的是,Android浏览器中的Webview的来源为file://,与我们使用的域不同。这导致拒绝将错误显示x-frame-options设置为sameorigin

[我可以采用哪些策略(在代理或客户端上)允许android应用程序与我们的网站进行交互(而无需完全删除sameorigin)?

android apache httpd.conf same-origin-policy
2个回答
2
投票

不要以为你可以做到。由于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


2
投票

WebView具有loadDataWithBaseURL()方法。您可以读入文件,并将所需的任何来源作为基本URL传递给它。

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

使用baseUrl作为内容的基本URL,将给定的数据加载到此WebView中。基本URL既用于解析相对URL,又在应用JavaScript的相同原始策略时使用。

© www.soinside.com 2019 - 2024. All rights reserved.