2009-04-14 26 views
16

Tôi cần được thông báo bất cứ khi nào người dùng nhấp vào liên kết trên một trang trong khung nội tuyến không thuộc cùng một tên miền. Tôi biết về các hạn chế xss, tuy nhiên tất cả những gì tôi cần biết là trang hiện tại đang được phân phát trong Iframe. Có cách nào để làm điều này mà không vi phạm các quy tắc xss?Lấy src hiện tại của một Khung nội tuyến bằng cách sử dụng JQuery

Trả lời

8

Nếu không áp dụng cho các giới hạn tập lệnh trên trang web, điều này sẽ hoạt động. Rất tiếc, tôi không biết cách để lấy URL mà không vi phạm những hạn chế này.

<html> 
    <head> 
     <script type="text/javascript"> 
      function GetIFrameUrl() 
      { 
       alert('url = ' + document.frames['frame1'].location.href); 
      } 
     </script> 
    </head> 
    <body> 
     <a href="#" onclick="GetIFrameUrl();">Find the iFrame URL</a> 
     <iframe name="frame1" src="http://www.google.com" width="100%" height="400"></iframe> 
    </body> 
</html> 
+0

Liệu viloate XSS này quy tắc? – Micah

+3

Vâng, đúng vậy. Tôi không tin rằng có một cách để làm những gì bạn cần mà không vi phạm các quy tắc. – joshuapoehls

+2

Trong firefox trong firebug tất cả tôi nhận được là document.frames là không xác định – OZZIE

32

Để có được vị trí iframe sử dụng jQuery:

alert($('iframeId').contents().get(0).location.href); 
+1

điều này không làm việc cho tôi – knocte

+6

này chỉ hoạt động trong trường hợp của cùng một tên miền - xss bảo mật ngăn chặn nó cho các tên miền khác nhau – Alvin

+0

Lưu ý, nếu js đang chạy * bên trong * khung nội tuyến, việc chọn iframe như thế sẽ không hoạt động, nhưng chọn nó như "$ ('iframe', window.parent.document)". (Vẫn giả định cùng một tên miền.) – neminem

4

Bạn có thể dễ dàng làm điều đó với js vani.

  • Query tài liệu cho một phần tử với tên cụ thể, id, lớp học hoặc bất cứ điều gì
  • Lấy nguồn cho thuộc tính cho rằng yếu tố

    //Get by Id 
    var frame_src = document.getElementById('myIframe').src 
    //Get by tag name - get the first 
    var frame_src = document.getElementsByName('frmExternal')[0].src 
    //Alert 
    alert(frame_src) 
    
0
<script type="text/javascript"> // if window open in iframe then redirect to main site 
     if(window.top.location != window.self.location) 
     { 
      alert(window.self.location); 
      // top.window.location.href = window.self.location; 
     } 
    </script> 
Các vấn đề liên quan