CORS vs CRSF
1. Cors
Nó là một khái niệm bảo mật mà chỉ cho phép Ajax request gọi tới service từ chính trang web đó
Ví dụ bạn có một hệ thống web tại địa chỉ javaintech.com.vn
Trong trường hợp service áp dụng Cors. Hệ thống trả về một trang web và bạn chỉ có thể gọi request ajax từ chính trang web này mới hợp lệ.
Trong trường hợp nếu service áp dụng Cors và chỉ cho phép một số trang web khác cũng gọi được request thì nó sẽ trả về danh sách các địa chỉ được truy cập tới Service
Access-Control-Allow-Origin: http://foo.client.com, ....
Nếu muốn cho phép tất cả thì nó để là
Access-Control-Allow-Origin: *
Như vậy việc thiết kế service sẽ bảo mật hơn, tuy nhiên ngày nay việc thiết kế service thường công khai tới mọi địa chỉ có thể gọi được. Nên việc áp dụng kĩ thuật này là không đáp ứng đc yêu cầu. Do vậy các hệ thống thường disable CORS
2. CRSF
Nó là một kĩ thuật tấn công dựa trên Javascript tự động gửi request.
Ví dụ trên trang web ngân hàng có một form chuyển tiền.
Nếu hack cơ vào trang này và họ phân tích được mẫu form rồi họ thiết kế một mẫu form tương tự tại trang web khác.
Trong trường hợp người dùng đang đăng nhập vào trang ngân hàng và họ truy cập và trang web của hacker thì khả năng cao là hacker có thể lấy được Cookie từ trang web ngân hàng và họ gửi đi một request tương tự, trong khi đó người dùng không biết gì về request đó.
Để tránh kĩ thuật tấn công này thì Cần phải yêu cầu Request từ form của ngân hàng cần truyền thêm một đoạn Random token có thể là ở Header hoặc body. Sauu đó server sẽ check đoạn token này có hợp lệ hay không ở bên dưới backend. Như vậy thì kiểu tấn công này sẽ không thể thực hiện đc nữa.
Với cách thiết kế service ngày nay. Đa phần stateless nên việc yêu cầu 1 token là bắt buộc như JWT
vậy cách thiết kế như vậy sẽ tránh được kĩ thuật tấn công CRSF.
Nó là một khái niệm bảo mật mà chỉ cho phép Ajax request gọi tới service từ chính trang web đó
Ví dụ bạn có một hệ thống web tại địa chỉ javaintech.com.vn
Trong trường hợp service áp dụng Cors. Hệ thống trả về một trang web và bạn chỉ có thể gọi request ajax từ chính trang web này mới hợp lệ.
Trong trường hợp nếu service áp dụng Cors và chỉ cho phép một số trang web khác cũng gọi được request thì nó sẽ trả về danh sách các địa chỉ được truy cập tới Service
Access-Control-Allow-Origin: http://foo.client.com, ....
Nếu muốn cho phép tất cả thì nó để là
Access-Control-Allow-Origin: *
Như vậy việc thiết kế service sẽ bảo mật hơn, tuy nhiên ngày nay việc thiết kế service thường công khai tới mọi địa chỉ có thể gọi được. Nên việc áp dụng kĩ thuật này là không đáp ứng đc yêu cầu. Do vậy các hệ thống thường disable CORS
2. CRSF
Nó là một kĩ thuật tấn công dựa trên Javascript tự động gửi request.
Ví dụ trên trang web ngân hàng có một form chuyển tiền.
Nếu hack cơ vào trang này và họ phân tích được mẫu form rồi họ thiết kế một mẫu form tương tự tại trang web khác.
Trong trường hợp người dùng đang đăng nhập vào trang ngân hàng và họ truy cập và trang web của hacker thì khả năng cao là hacker có thể lấy được Cookie từ trang web ngân hàng và họ gửi đi một request tương tự, trong khi đó người dùng không biết gì về request đó.
Để tránh kĩ thuật tấn công này thì Cần phải yêu cầu Request từ form của ngân hàng cần truyền thêm một đoạn Random token có thể là ở Header hoặc body. Sauu đó server sẽ check đoạn token này có hợp lệ hay không ở bên dưới backend. Như vậy thì kiểu tấn công này sẽ không thể thực hiện đc nữa.
Với cách thiết kế service ngày nay. Đa phần stateless nên việc yêu cầu 1 token là bắt buộc như JWT
vậy cách thiết kế như vậy sẽ tránh được kĩ thuật tấn công CRSF.
Comments
Post a Comment