fbpx

Lập Trình Viên cần PHẢI biết CORS – GIẢI THÍCH DỄ HIỂU

Cors là gì

Làm thế nào trình duyệt có thể ngăn chặn các trang web khác truy cập trái phép tài nguyên trên trang web của bạn.

Đó chính là nhờ CORS (Cross-Origin Resource Sharing)!

Nếu không có CORS, hacker có thể dễ dàng lấy được thông tin tài khoản người dùng bằng cách tạo ra một trang web có giao diện giống y hệt trang web mà người dùng hay truy cập, ví dụ như là Facebook.

Trang web giả mạo lấy thông tin

Khi người dùng đăng nhập trên trang web giả mạo, nó sẽ thực hiện request đến máy chủ Facebook.

Sau đó, máy chủ Facebook trả về các thông tin quan trọng, bao gồm cả cookie.

Lúc này, hacker đã có đầy đủ thông tin để truy cập vào tài khoản của bạn.

Tuy nhiên, cơ chế CORS của trình duyệt sẽ không cho phép điều này xảy ra.

Vậy cơ chế CORS hoạt động như thế nào?

1. Cơ chế hoạt động của CORS

Khi trang web A gọi api của trang web B, trình duyệt sẽ tiến hành gửi request đến máy chủ của trang web B.

Bên trong request có HEADER Origin là tên miền của trang web A (https://domain-a.com).

Dựa vào Header Origin, máy chủ sẽ biết được tên miền nào đang thực hiện request và xác định xem tên miền này có hợp lệ hay không. Sau đó là trả về response cho trình duyệt.

Nếu bên trong response có HEADER Access-Control-Allow-Origin với giá trị trùng với tên miền của trang web A thì trình duyệt sẽ cho phép trang web A truy cập nội dung của response.

Cors cho phép truy cập

Ngược lại, nếu Access-Control-Allow-Origin không tồn tại hoặc có giá trị khác tên miền trang web A thì trình duyệt sẽ không cho phép trang web A truy cập nội dung của response.

Cors không cho phép truy cập

Đây là cách hoạt động cơ bản của CORS.

Đôi khi bạn sẽ thấy Access-Control-Allow-Origin có giá trị là *, nếu bạn biết ý nghĩa của giá trị này là gì thì hãy để lại bình luận bên dưới nhé.

2. Kết luận

Bên cạnh Access-Control-Allow-Origin, CORS còn sử dụng một số Headers khác để tăng cường sự bảo mật.

Bạn sẽ được học chuyên sâu những kiến thức này trong các Khóa Học Lập Trình CHUẨN KỸ SƯ của LetDiv.

5 2 votes
Đánh giá
guest
0 Bình luận
Inline Feedbacks
View all comments
0
Nếu bạn có thắc mắc gì hãy để lại bình luận nhé!!!x