Subspace - một cơ chế truyền thông đa miền (cross-domain) cho phép truyền thông một cách hiệu quả qua các domain mà không mất tính bảo mật – có thể cung cấp sự truyền thông tin cậy như ban đầu cho web mashup.
Sử dụng JavaScript, những tính năng bảo mật khác nhau được áp dụng trong những data-passing phare khác nhau, trong các trình duyệt khác nhau:
Cross-subdomain communication. Cross-domain code Authorization. Cross-domain frame access.
- Truyền thông cross-subdomain
Đối với JavaScript, một site được định danh như là bộ ba: protocol, hostname, port, ví dụ:
http://a.example.com và http://b.example.com => site khác http://www.example.com/a và http://www.example.com/b => cùng site
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain- policy.dtd"> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy> <?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain- policy.dtd">
<cross-domain-policy>
<allow-access-from domain="www.mysite.com" to- ports="25" />
Sử dụng JavaScript, bạn có thể phân tách dữ liệu giữa các domain có cùng một hậu tố. Nếu hai domain muốn chia sẻ giao tiếp một hậu tố thống nhất, chúng ta sử dụng thuộc tính JavaScript document.domain để cung cấp sự truy cập đầy đủ tới mỗi domain. Ví dụ:
a.example.com và b.example.com có thể được thay đổi biến
document.domain thành example.com, cho phép chúng chuyển dữ liệu và mã JavaScript khi chạy.
Hạn chế: hậu tố được thay đổi không quá dài để thành ‘top level domain name’ (VD: ‘.com’) ngăn sự truyền thông qua domain bất kì.
- Sự chấp nhận mã cross-domain
Chính sách same-origin ngăn chặn các mã khỏi việc chuyển giữa các domain. Một hàm được định nghĩa trong một domain sẽ không được gọi bởi mã trong domain khác, do đó không có sự mơ hồ về domain đã thực hiện hoạt
động đó khi sử dụng bảo mật same-origin để kiểm tra.
Closure: hàm được định nghĩa trong thân hàm khác, tham chiếu tới biến trong vùng khi nó được tạo, chứ không phải khi nó được gọi.
Bằng việc cài đặt biến document.domain, một trang web có thể chuyển tiếp một closure tới một frame trong những domain khác. Có hai lựa chọn:
Authorization động: closure kế thừa các đặc quyền bảo mật của trang mà đã gọi nó. Phương pháp tiếp cận này tương ứng cho đường link kiểm soát
của ngăn xếp gọi. (Opera và Sapari). VD: khi www.site1.com gọi tài liệu từ
www.site2.com, trình duyệt thi hành tính năng site1 và kiểm soát nó.
Authorization tĩnh: closure kế thừa quyền bảo mật của trang nơi mà closure được tạo. Sự tiếp cận này có thểđược thực hiện bởi đường link truy cập của hàm thay thế link kiểm soát. (IE và Firefox). VD: khi www.site1.com gọi tài liệu từ www.site2.com, trình duyệt sẽ gọi tính năng site2 đã được thi hành trên toàn bộ tài liệu.
Authorization động có thể được mô phỏng trong một trình duyệt
authorization tĩnh bởi việc gọi eval dựa trên dữ liệu chuỗi nhận từ những site khác nhưng ngược lại thì không đúng: authorization động không thể dễ dàng mô phỏng trong trình duyệt authorization tĩnh.
- Truy cập frame cross-domain
Có một vài chính sách browser : •Quyền (Firefox và Safari)
•Hạn chế (Opera)
•Khả năng cấu hình, “Yes” là mặc định (IE6)
•Cấu hình nhưng bị hạn chế, “No” là mặc định (IE7)