2010-07-25 28 views
5

Facebook và những người khác cung cấp ít đoạn mã iframe mà tôi có thể đưa vào trang web của mình. Ví dụ:Hiểu sự an toàn của iframe bên thứ 3?

<iframe src="http://www.facebook.com/widgets/like.php?href=http://example.com" 
     scrolling="no" frameborder="0" 
     style="border:none; width:450px; height:80px"></iframe> 

Những gì tôi muốn biết là, nếu tôi đặt mã này bên cạnh tôi, có thể mã họ nạp vào truy cập trang web của tôi DOM của trang web của tôi? Tôi thấy một số bảo mật isssues nếu như vậy.

Tương tự như vậy, facebook cho phép tôi đặt một khung nội tuyến vào trang web của họ, đây là cách ứng dụng facebook hoạt động. Tôi có thể khai thác bất kỳ dữ liệu nào trên bất kỳ trang nào chứa iframe của tôi không?

Lưu ý tôi đã sử dụng facebook làm ví dụ ở đây, nhưng nhiều công ty làm điều tương tự để quesiton này không cụ thể cho facebook theo bất kỳ cách nào vì vậy tôi không gắn thẻ nó như vậy.

Cũng có thể trang cha mẹ truy cập DOM của iframe?

Trả lời

3

Thực ra có các quy tắc cụ thể là inheritance for iframes. Điều này nằm ngoài chính sách có nguồn gốc giống nhau và tôi khuyên bạn nên đọc toàn bộ Cẩm nang của Google Browser Sec.

+0

liên kết rất hữu ích –

3

Tôi biết trang cha mẹ có thể truy cập DOM của khung nội tuyến. Gần đây, chúng tôi đã có một dự án tại nơi làm việc, nơi chúng tôi có một trang web cần tuân thủ 508. Khung nội tuyến không và mặc dù trình đọc màn hình đang xử lý khung nội tuyến tốt hơn nhiều, nội dung trong iframe này không tuân thủ. Chúng tôi đã tải thư viện jquery vào trang web của chúng tôi và sau đó cũng tải mã vào trang web của chúng tôi để thao tác iframe (chỉ sau khi tải) và tại thời điểm đó, kết hợp nội dung iframe có thể truy cập được.

Để cung cấp cho bạn ý tưởng về cách chúng tôi đã làm điều đó ở đây là một mẫu của jquery của chúng tôi. (Đã sử dụng nhiều tìm và thay thế nhưng bạn có ý tưởng, bạn có thể làm những việc khác.)

$('iframe').load(function() { 
    var f = $(this).contents(); 
    f.find('#sysverb_back').remove(); 
    f.find('a.column_head').each(function(){ 
     $(this).attr('title', $(this).text()); 
    });   
    f.find('img[title]:not([alt])').each(function(){ 
     $(this).attr('alt',$(this).attr('title')); 
    }); 
    f.find('input').filter(function() { 
     return this.id.match(/sys_readonly\..+|ni\..+/); 
    }).each(function() { 
     $(this).before('<label for="'+this.id+'" style="display:none;">'+this.id+'</label>'); 
    }); 

}); 

});

Mặc dù tôi không biết liệu bạn có thể truy cập iframe vào DOM mẹ hay không.

+0

Truy cập DOM parnet là nơi tôi thấy vấn đề bảo mật, tôi đồng ý truy cập nội dung iframe con sẽ được cho phép. – Winforms

+2

@Winforms không nên, bởi vì sau đó kẻ tấn công có thể đặt một '