WEB SECURITY – DỮ LIỆU NGƯỜI DÙNG ĐƯỢC AN TOÀN P2

Bạn đã được tìm hiểu về web security và những cách cơ bản để bảo vệ website và dữ liệu người dùng trong bài web security phần 1. Trong bài viết này, chúng ta sẽ tìm hiểu thêm về cách mà browser giảm thiểu khả năng bị tấn công.

Key word: web security.

#1 CƠ BẢN VỀ WEB BROWSER SANDBOX CỦA WEB SECURITY

#1.1 ĐỊNH NGHĨA

Hiện nay, đa số các trình duyệt đều dùng cơ chế (hay kĩ thuật) sandbox (có thể gọi sandbox là cái hộp trong Tiếng Việt). Để bảo vệ người dùng trong khi duyệt web.

Bạn đã từng nghe về web browser sandbox chưa? Đây là một kĩ thuật về security nhằm cô lập các chương trình, tính năng với nhau. Nhằm chống thiệt hại cho toàn bộ hệ thống hay các thành phần còn lại.

Trình duyệt giống như một sandbox.
Trình duyệt giống như một sandbox.

Bạn hoàn toàn không biết được một trang web bạn truy cập ẩn chứa những nguy hiểm tiềm tàng nào và sẽ thực thi những đoạn script độc hại nào. Nhưng với cơ chế sanbox, nó sẽ giúp ích cho bạn rất nhiều trong việc bảo vệ chính bạn.

#1.2 MỘT VÀI VÍ DỤ CỤ THỂ

Lấy một ví dụ cho bạn dễ hiểu. Bạn đang dùng Chrome để duyệt web, và bạn đang bật 5 tab. Trong đó có 1 tab bạn mở Facebook. Không may vì một vấn đề nào đó mà tab Facebook của bạn bị treo (not responding). Mình chắc chắn bạn đã từng gặp trường hợp này ít nhất 1 lần. Nhưng bạn có bao giờ để ý, khi tab Facebook treo, nhưng 4 tab còn lại hoạt động bình thường. Thì đây được gọi là cơ chế sanbox của trình duyệt. Nhằm tách biệt hoàn toàn các chương trình, ứng dụng ra với nhau.

Một ví dụ khác, khi bạn truy cập một website sử dụng Chrome với cơ chế sandbox. Website ấn chứa một đoạn script để bật webcam của bạn. Nhưng với cơ chế sandbox, website này không có nhiều quyền hạn để làm điều đó. Và trình duyệt của bạn sẽ gửi cho bạn một thông báo như hình dưới. Lúc này bạn có thể cân nhắt mục đích của bạn ở website này để cho phép hoặc từ chối bật webcam.

Website yêu cầu bật webcam.
Website yêu cầu bật webcam.

Như bạn thấy, trình duyệt sử dụng sandbox để bảo vệ bạn. Nhưng không phải bảo vệ bạn một cách tuyệt đối. Bạn cần học nhiều hơn nữa để có thể tự bảo vệ chính mình và người dùng của bạn.

#2 ĐÔI ĐIỀU VỀ SAME ORIGIN POLICY TRONG WEB SECURITY

SQS injection, XSS, CSRF, Man in the middle, Sniffer, Fishing, DDOS, … Đa số các lập trình viên hiện nay đều biết tới những thuật ngữ, kĩ thuật trên. Nhưng có một concept cực kì quan trọng trong thế giới web security mà không phải ai cũng biết, Same Origin Policy.

Khi bạn vi phạm Same Origin Policy.
Khi bạn vi phạm Same Origin Policy.

Lỗi ở trên thường xảy ra khi khi website của bạn vi phạm Same-Origin Policy (SOP). Vậy đối với lập trình viên, làm thế nào để sản phẩm của bạn không bị vi phạm SOP. Hay nói cách khác, khi bạn code, làm sao để bạn có thể tránh những lỗi như thế này.

Mình sẽ lấy nhiều ví dụ nhất có thể để bạn có thể hiểu được khái niệm này.

#2.1 ORIGIN LÀ GÌ?

Trước tiên, bạn cần hiểu thật kĩ như thế nào là một Origin. Origin của một trang web được xác định bởi Protocol, HostPort. Với 3 điều này, chúng ta sẽ dễ dàng xác định được hai website có chung một origin (nghĩa là có chung protocol, host và cả port).

Ví dụ với website của mình: https://lenhatthanh.com. Mình gọi đây là (1).

https://lenhatthanh.comDomain này không chung Origin với (1). Lý do là nó khác protocol (http khác với https) .
https://lenhatthanh.com:9000Không chung Origin với (1). Lý do là nó khác port (port 9000 khác với port 80 – port mặc định của http).
https://coderdocs.infoDomain này khác host nên không thể chung Origin với (1).
https://api.lenhatthanh.com Khác host nên không thể chung Origin với (1).
https://lenhatthanh.com/web-devDomain này chung một origin với (1) vì có chung protocol, host và port.

Với những ví dụ trên, bạn đã hiểu thế nào là 2 website có chung một Origin. Và những website khác Origin chúng ta hay gọi với thuật ngữ cross-origin. Chúng ta cùng bắt đầu với khái niệm Same Origin Policy.

#2.2 KHÁI NIỆM SAME ORIGIN POLICY

Mình nghĩ bạn đã là một web developer, thì bạn sẽ quen thuộc với Ajax Request. Bạn rất thường xuyên viết các HTTP Request để giao tiếp từ client tới server để lấy dữ liệu cần thiết. Có bao giờ bạn tạo một Ajax Request từ website của bạn tới một website khác trên mạng internet (request như vậy được gọi là Cross-Origin Request và được điều khiển bởi CORS)?

Việc thực hiện một Cross-Origin Request như trên sẽ bị chặn bởi Same Origin Policy.

Như vậy, Same Origin Policy là một tiêu chuẩn bảo mật của các trình duyệt (browser) nhằm ngăn chặn việc tương tác giữa các Documents hoặc Scripts giữa các website mà khác Origin với nhau.

Ví dụ như website của mình https://lenhatthanh.com có chứa một Ajax request (trong một file Javascript nào đó). Và request này yêu cầu get dữ liệu JSON từ website https://www.coderdocs.info. Và với cơ chế của SOP, request này sẽ bị chặn lại.

Nếu không có SOP, khi người dùng vô tình truy cập một trang web độc hại. Script được đặt sẵn trên này có thể truy cập được dữ liệu và thực hiện tính năng của bất kỳ trang web nào người dùng đã dùng trước đó. Chẳng hạn như thực hiện chuyển tiền, đọc mail hay chụp ảnh thẻ tín dụng khi giao dịch trực tuyến. Vì lý do này, các trình duyệt bắt buộc phải áp dụng SOP để ngăn chặn tương tác giữa các domain khác nhau

#2.3 ĐẶC ĐIỂM CỦA SAME ORIGIN POLICY

Một số đặc điểm cực kì quan trọng trong SOP:

  • Có thể gửi request đến một domain khác (ví dụ submit form) nhưng nó không thể từ fetch dữ liệu được trả về.
  • Có thể tải script từ một domain khác và thực thi ngay tại domain mình. Điều này do script thuộc loại code (mã lập trình) chứ không chỉ là data (dữ liệu) nên không dẫn đến việc lộ lọt thông tin nhạy cảm.
  • Không thể đọc hoặc chỉnh sửa cookie của domain khác.

Nếu các tính chất trên bị vi phạm thì sẽ xảy ra một cuộc tấn công cross-domain.

Tuy nhiên trong nhiều trường hợp, chúng ta có thể bypass Same Origin Policy như thay đổi config của server nhận request hoặc sử dụng cơ chế Cross Origin Resource Sharing (CORS). Các vấn đề này sẽ được tiếp tục trong phần 3 của series này.

# KẾT

Thông qua phần 2 này, bạn đã tìm hiểu qua và có một chút cái nhìn tổng quát về cơ chế sandbox và tính năng Same Origin Policy của trình duyệt. Những kiến thức cực kì quan trọng trong thế giới web security. Mọi thắc mắc bạn có thể để lại comment và mình sẽ giải đáp trong thời gian sớm nhất.


[rrssb options=”facebook, twitter, linkedin, email, github, pinterest”]


2 Comments

Leave a Reply