2015-12-02 63 views
3

我試圖檢測一個頁面是否通過沙盒iframe加載。這可能嗎?如何知道通過iframe加載的頁面是否在沙箱中?

例如,我們提供定製的嵌入式小工具,有些人認爲他們都通過沙箱的iframe他們聰明,但是這打破了某些東西..如window.top.location

顯然,他們可以使我們所需要的功能但理想情況下,我應該能夠只是做類似:

"sandbox" in window.top 

我也嘗試過做

try { 
    // do something that would not work if within sandbox 
} catch(e) { 

} 

卜這不起作用,因爲它是瀏覽器安全錯誤,並且與javascript無關。

JSFiddle實際上是通過沙盒來防止window.top.location導航,所以這將是一個很好的例子。 如果你看看這裏這個例子:

http://jsfiddle.net/mwsb8geL/show/

你可以看到錯誤,當你按下即時在線預訂按鈕。

enter image description here

+0

是的,他們是非常相同的問題。我們都想知道當前頁面是否在沙盒環境中執行。這兩個問題都沒有答案。我尋找解決方案,當我有機會時我會閱讀規範。 – Layke

回答

1

一個項目sandblaster可以幫助你檢測,如果你正在運行的沙盒。

在你測試的iframe的內部,如果它是沙盒,打開你的腳本標籤並粘貼https://raw.githubusercontent.com/JamesMGreene/sandblaster/master/dist/sandblaster.js的內容。這是由於安全問題。

在此之後,其如下簡單。

var result = sandblaster.detect(); 
if(result.sandboxed === true) { 
    //sandboxed 
} 

這是一個demo我做了另一個答案,但顯示該解決方案的工作原理。

相關問題