破解 js 防 ifram 嵌入方法(繞開防嵌js 實現跨域模擬登入)
運用場景:
我想在我的系統(A系統)上用ifram嵌入一個他人跨域的系統(B系統),且該系統需要進行登入驗證。
<ifram>很容易就實現了,可是這時候,頁面地址立馬發生跳轉到B系統的登入頁。原來在B系統的登入頁面上有這麼一句防止被ifram巢狀的程式碼:
if(window.top !== window.self){ window.top.location = window.location;}
這時候通過A系統的js是無法獲取到B系統的頁面文件。
嘗試一:在js載入但未執行到跳轉的js時將程式遮蔽或重文件中移除。
結果:失敗!跨域的ifram是無法獲取到iframe中的文件。
嘗試二:重大發現,被嵌入的B系統除了登入頁有防嵌入程式碼,其他頁面則無此程式碼。
這意味著只要我跳過了登入頁,我就能實現ifram將B系統嵌入我的A系統中了。哈哈哈,這樣果然成功嵌入了B系統(如果裡面的頁面也有防iframe嵌碼,那就無能為力了)!!
1、首先在自己的A系統中建立一個空白html(記住是A系統,模擬登入的使用者名稱和密碼可固定寫死也可動態配置)。
2、在該頁面用js模擬提交表單登入名和密碼到B系統。這時候B系統返回的是系統內部無防嵌碼的頁面在ifram中顯示。成功嵌入B系統。
這種方法等於直接繞開了js防iifram嵌入的頁面。嚴格意義上不算破解此程式碼。
此外:若防嵌程式碼如百度空間等只是如下情況,那不需要上面那麼麻煩。直接給location賦值即可,
if (top.location != self.location) { top.location.href="/self.location.href"; }
破解:<script type="text/javascript"> var location=document.location </script>
或者: <script type="text/javascript"> var location="" </script>
但願我的經驗能幫到你,覺得有用的給個評論唄!