2016-01-12 20 views
5

Chúng tôi có một ứng dụng Android đó là iframe-ing trang web của chúng tôi vào ứng dụng của họ. Tuy nhiên để ngăn chặn nhấp chuột jacking chúng tôi có chỉ thị sau trong cấu hình proxy của chúng tôi.Android Iframe SameOrigin trên các trang web tùy chỉnh

header thêm X-FRAME-OPTIONS "SAMEORIGIN"

Đây là một chiến lược Cross-Origin Resource Sharing rất phổ biến.

Thật không may là Webview trong trình duyệt Android có nguồn gốc là file:// khác với tên miền chúng tôi sử dụng. Điều này dẫn đến lỗi bị từ chối hiển thị x-frame-options được đặt thành sameorigin.

Chiến lược nào (trên proxy hoặc phía ứng dụng khách) Tôi có thể sử dụng để cho phép ứng dụng Android tương tác với trang web của chúng tôi (không hoàn toàn loại bỏ sameorigin) không?

Trả lời

2

Đừng nghĩ rằng bạn có thể làm điều đó. Vì Chromium không thấy Allow-From làm tính năng [1] và Android dựa chủ yếu vào khung của Chromium cho WebViews.

Tôi đoán các yêu cầu của bạn là chặn trình cắm nhấp chuột dựa trên trình duyệt?

Vì bạn không thể sử dụng Allow-From. Bạn có thể muốn suy nghĩ về một cách tiếp cận tương tự như được nêu trong cuộc trò chuyện BlackHat này [2], UI Redressing Attacks on Android Devices. Tôi khuyên bạn nên đọc toàn bộ nội dung thú vị của pdf.

Khám phá 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

Các WebView có một phương pháp loadDataWithBaseURL(). Bạn có thể đọc trong tập tin của bạn, và vượt qua điều đó thông qua bất kỳ nguồn gốc nào bạn cần làm url cơ sở.

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

tải dữ liệu cho vào WebView này, sử dụng baseUrl như URL cơ sở cho nội dung. URL cơ sở được sử dụng để giải quyết các URL tương đối và khi áp dụng chính sách xuất xứ giống nhau của JavaScript.

Các vấn đề liên quan