如果加載的頁面位於iframe內,如何檢測服務器端(c#,asp.net mvc)?謝謝檢測頁面是否位於iframe內 - 服務器端
16
A
回答
16
但是,這是不可能的。
<iframe src="mypage?iframe=yes"></iframe>
,然後檢查服務器端,如果查詢字符串中包含的iframe =是 或與Referer標頭由瀏覽器發送。
3
如果您對@ WTP的回答發表評論,則無法檢查該內容是否符合您的「安全」要求。
1
我不認爲服務器端可以做到這一點,那麼爲什麼不把隱藏的控件放在你的頁面中將在iframe中?當iframe中的URL加載時,可以添加一些客戶端代碼來設置隱藏的輸入以指示您在iframe中。最簡單的檢查將是對客戶端在一個onload方法,像這樣:
// Set hidden input
someHiddenInput.value = self != top
它比查詢字符串更安全,但它仍然可能不適合你足夠的安全性。
我的2美分。
6
使用下面的代碼形式內:
<asp:HiddenField ID="hfIsInIframe" runat="server" />
<script type="text/javascript">
var isInIFrame = (self != top);
$('#<%= hfIsInIframe.ClientID %>').val(isInIFrame);
</script>
然後你就可以很容易地檢查,如果它在代碼隱藏的iframe:
bool bIsInIFrame = (hfIsInIframe.Value == "true");
測試,爲我工作。
編輯:請注意,您需要jQuery來運行我上面的代碼。要運行它,而不只是jQuery的使用一些類似於下面的代碼(未經測試)代碼設置的隱藏字段的值:當頁面加載一次,這僅適用於:
document.getElementById('<%= hfIsInIframe.ClientID %>').value = isInIFrame;
編輯2。如果有人有想法來改善這一點,讓我知道。在我的情況下,我很幸運只需要回傳後的值。
相關問題
- 1. 檢測用戶是否位於代理服務器後
- 2. 檢測我的頁面是否位於代碼後面的框架中
- 3. 檢測Silverlight服務器端
- 4. 重新定位服務器端頁面內的控件
- 5. 檢測iframe網頁是否有響應
- 6. 檢測服務器是否可達
- 7. 如何檢測導致內部服務器錯誤的頁面?
- 8. Rails 3:檢測服務器端是否禁用了Cookie
- 9. 檢查iFrame頁面是否存在
- 10. 我可以在c#中使用服務器端檢測內容是否加載到iframe或主窗口中?
- 11. 如何檢測Windows終端服務器是否處於安裝模式
- 12. 檢測鼠標是否位於iframe中的某個元素上
- 13. 是否可以在服務器端緩存一個asp頁面?
- 14. 如何檢查文字是否存在於服務器端?
- 15. 關於檢查客戶端是否從服務器套接字
- 16. MDN如何檢測服務器端的iframe請求併發送內容?
- 17. 檢測是否從php安裝了java的網頁服務器
- 18. 檢測頁面中的所有iframe是否具有src
- 19. 檢測頁面是否有框架和iframe的大小
- 20. 獲取在服務器端加載iframe的頁面
- 21. 檢查頁面是否已更新與服務器上的JS
- 22. PHP獲取頁面iframe位於iframe內部的網址
- 23. 對象檢測 - 服務器端 - 技術
- 24. 服務器端設備檢測
- 25. 檢測服務器端啓用的Javascript
- 26. Perl服務器端跨域檢測
- 27. 檢測服務器端的TimeoutException WCF
- 28. ASP.NET檢測SVG功能服務器端
- 29. htaccess的服務器端WEBP檢測
- 30. 檢測硬件更改服務器端
謝謝,但這並不能解決我的問題,因爲我希望只有在iframe內出於某種安全原因才能訪問頁面。在查詢字符串中添加一些內容很容易做到安全。 – pistacchio 2009-07-24 18:31:38
如果出於安全原因,那麼你做錯了什麼。充其量,唯一可能提示你在iframe中的東西是引用者。即使這是可僞造的。安全性是通過訪問檢查和驗證完成的,而不是通過脆弱的假設網絡完成的。 – Yuliy 2009-07-24 18:35:38