Thứ Năm, 12 tháng 11, 2015

Same Origin Policy (SOP)

Same Origin Policy (SOP), cũng được gọi là Single Origin Policy, là một biện pháp an ninh được sử dụng trong ngôn ngữ lập trình Web browser như JavaScript và Ajax để bảo vệ sự bảo mật và tính toàn vẹn của thông tin. SOP ngăn chặn kịch bản của một trang web truy cập và tương tác với các kịch bản sử dụng trên các trang web khác.

HTTP cookies phụ thuộc vào SOP để đảm bảo rằng các thông tin nhạy cảm về tổ chức hoạt động của người dùng nhất định, chỉ xảy ra một trang web. Yêu cầu kịch bản là từ cùng một trang web, hoặc có cùng một nguồn gốc, để tương tác với nhau mà không có giới hạn cho phép trình duyệt để duy trì các phiên sử dụng một cách an toàn mà không cần sử dụng lại xác thực.

SOP thường phá vỡ bởi SSL VPN; VPN trích xuất nội dung từ khắp nơi trên Internet và thông báo cho client biết được rằng đã sử dụng lại chúng, do đó các script được biết là được dùng lại từ nhiều nguồn khác nhau. Điều này rất nguy hiểm bởi một đoạn mã độc hại từ một trang web bị xâm nhập có thể tương tác với một kịch bản từ một trang web hợp lệ từ đó đến  việc lây nhiễm nội dung độc hại hoặc các dữ liệu nhạy cảm kèm theo.

Tại sao SOP lại quan trọng?


Giả sử bạn đang đăng nhập vào Facebook và truy cập vào một trang web độc hại trong một tab trình duyệt. Nếu không có SOP JavaScript trên trang web đó có thể làm bất cứ điều gì vào tài khoản Facebook của bạn mà bạn được phép làm. Ví dụ đọc thư cá nhân, bài cập nhật trạng thái, phân tích cấu trúc HTML DOM sau khi bạn nhập mật khẩu trước khi thao tác form.

Nhưng tất nhiên Facebook muốn sử dụng JavaScript để nâng cao khả năng sử dụng người dùng. Vì vậy, điều quan trọng là trình duyệt có thể phát hiện rằng JavaScript này là đáng tin cậy để truy cập tài nguyên Facebook. Đây chính là cách sử dụng SOP: Nếu JavaScript được bao gồm từ một trang HTML trên facebook.com, nó có thể truy cập vào tài nguyên facebook.com.

Bây giờ thay thế Facebook với trang web ngân hàng trực tuyến của bạn, và nó sẽ được rõ ràng rằng đây là một vấn đề.

Origin là gì?

Tôi thực sự không thể hoàn toàn hiểu SOP là gì. Tôi đoán biết được rằng SOP là sở hữu tài nguyên từ domain khác(được biết như là file JS), nó sử dụng tài nguyên khác phục vụ cho chính bản mình, nghĩa là không thể sửa đổi hay phục vụ tài nguyên".

Nói một cách không chính xác: Tập tin HTML đính kèm Javascript, nó sẽ sử dụng nội dung của tài nguyên khác sử dụng cho mình chứ không truy cập hay chỉnh sử tài nguyên gốc.

Cross Domain Comunication làm việc như thế nào?

Các chính sách cùng một nguồn gốc là không có hiệu lực cho tất cả các request. Trong số những người khác <script>, <img> và các tag khác có thể tài nguyên từ bất kỳ domain nào. Các Frame và iframe cách từ các domain khác nhưng tương tác với nội dung mà là hạn chế.

Có một số phương pháp tiếp cận để cho phép XMLHttpRequest (ajax) gọi sang domain khác một cách an toàn, nhưng họ không được hỗ trợ bởi các trình duyệt phổ biến. Cách phổ biến để cho phép giao tiếp với các domain khác là JSONP:
<script type="text/javascript" src="http://example.com/
     ?some-variable=some-data&jsonp=parseResponse">
</script>
Và Javascript trả về:
parseResponse({"variable": "value", "variable2": "value2"})
Tiếp cận Cross Site Scripting theo hướng SOP?

Cross Site Scripting là một lỗ hổng cho phép kẻ tấn công để đưa mã độc vào một trang web. Do đó, các website khác sử dụng lại nội dung đính kèm mã độc có thể bị dính mã độc kèm theo. Dẫn đến Web browser không biết được mã độc gây ra từ nguồn nào(theo kiểu tấn công chéo). Đây chính là vấn đề nan giải cho việc phòng chống lỗ hổng này.

Tài liệu tham khảo
 
http://security.stackexchange.com/questions/8264/why-is-the-same-origin-policy-so-important
http://resources.infosecinstitute.com/bypassing-same-origin-policy-sop/
https://en.wikipedia.org/wiki/Same-origin_policy
http://resources.infosecinstitute.com/bypassing-same-origin-policy-sop/

Không có nhận xét nào:

Đăng nhận xét