Khi tìm kiếm danh sách cookie cho cookie hợp lệ, một sự so sánh của thuộc tính miền của cookie là thực hiện với các tên miền Internet của dẫn chương trình mà từ đó các URL sẽ vời. Nếu có kết quả phù hợp đuôi, thì cookie sẽ đi qua đường dẫn phù hợp để xem liệu nó có được gửi hay không. "Kết hợp đuôi" có nghĩa là thuộc tính miền được đối sánh với đuôi của tên miền đủ điều kiện là máy chủ lưu trữ. Thuộc tính miền của "acme.com" sẽ khớp với tên máy chủ "anvil.acme.com" cũng như "shipping.crate.acme.com". Chỉ các máy chủ trong miền được chỉ định mới có thể đặt một cookie cho tên miền và tên miền phải có ít nhất hai (2) hoặc ba (3) khoảng thời gian trong chúng để ngăn các miền của biểu mẫu: ".com", ". edu ", và" va.us ". Bất kỳ miền nào bị lỗi trong một trong số bảy tên miền cấp cao nhất đặc biệt được liệt kê bên dưới chỉ yêu cầu hai khoảng thời gian. Bất kỳ tên miền nào khác yêu cầu ít nhất ba. Bảy tên miền cấp cao nhất đặc biệt có tên là "COM", "EDU", "NET", "ORG", "GOV", "MIL" và "INT".
Giá trị mặc định của tên miền là tên máy chủ của máy chủ được tạo phản hồi cookie.
đọc lên here.
bạn có thể tải iframe từ máy chủ lưu trữ, sau đó tải lại chính nó với giá trị cookie được mã hóa trong phần phân đoạn (sau #).
bạn có thể truy cập thuộc tính document.location từ cửa sổ chính (truy cập vào thứ duy nhất có thể truy cập được). giải mã nó và chuyển nó đến máy chủ của bạn thực hiện một yêu cầu ajax.
Điều này có thể trông giống như vậy.
xss.php (nằm trên cookie.example.com):
<?php
$data = array(
'uid' => $_COOKIE['uid'],
'loginhash' => $_COOKIE['loginhash']);
header('Location: xss.php#'.urlencode(json_encode($data)));
cho trường hợp cụ thể này, không cần phải là thẻ bắt đầu bằng #! nó chỉ thuận lợi cho các tình huống khác. điều này cũng có thể được thực hiện trong javascript.
một trang web khác nhúng xss.php:
<iframe id="cookies" src="http://cookies.example.com/xss.php"></iframe>
you need to somehow delay the following of do it in a loop that stops after 5 seconds or something.
if(document.getElementById('cookies').location != 'http://cookies.example.com/xss.php') {
// read location, extract hashtag, json decode using javscript, there you have your user. send it to server for validation or whatever.
}
teqnique này được gọi là XSS recieving. nó được ví dụ sử dụng bởi facebook cho tất cả các thư viện kết nối javascript của họ.
một cách tốt hơn có thể là một số loại giao thức trao đổi mã thông báo như openid.
amazon cũng sử dụng điều này.
bạn có thể thiết lập nhà cung cấp dịch vụ mở (có sẵn thư viện có thể thực hiện điều đó ngoài hộp) và đặt để chuyển hướng auotmatically trở lại mà không cần tương tác của người dùng. tôi thường thấy giao thức openid được sử dụng cho một số mục đích khác giống như giao tiếp tên miền chéo.
Tôi nghĩ bài viết này giải thích khá ngắn gọn: http://www.codeguru.com/csharp/csharp/cs_internet/article.php/c19417/Sharing-Cookies-Across-Domains.htm – peteski