Cookie là gì
Cookie là một trong những phương pháp có sẵn bởi trình duyệt, dùng để lưu thông tin ngay trên client. Thông tin này được sử dụng phục vụ cho các trang Web nhằm tối ưu trải nghiệm cho cá nhân người dùng đang ở trên trình duyệt.
.jpg)
Ứng dụng của Cookie
Nhờ Cookie, một trang web có thể lưu trữ các thói quen và lựa chọn của người dùng, nhờ đó mà có thể cá nhân hóa cho việc sử dụng Web.
Giả sử bạn có một blog nơi bạn muốn hiển thị "quảng cáo có gì mới" cho người dùng của bạn. Người dùng có thể lựa chọn loại bỏ quảng cáo và sau đó sẽ không gặp lại quảng cáo trong một tháng. Bạn sử dụng Cookie để lưu lựa chọn này của người dùng và đặt nó hết hạn sau một tháng. Trang Web của bạn sẽ kiểm tra cookie được lưu sẵn trên trình duyệt, khi biết được người dùng lựa chọn "không gặp lại quảng cáo trong 1 tháng", bạn sẽ tắt việc hiển thị quảng cáo này.
Cách này sẽ giúp người dùng của bạn thuận tiện khi có thể lưu trữ lựa chọn ngay trên trình duyệt để tái sử dụng với những lần đăng nhập sau. Thuận tiện vì trang Web sẽ không yêu cầu họ phải đăng nhập, nhờ đó giảm bớt các thao tác. Tuy nhiên nếu bạn chuyển sang trình duyệt hoặc client khác, thông tin này sẽ không được chuyển sang cùng, trong ví dụ trên khi vào một máy tính khác, người dùng sẽ phải xem lại quảng cáo.
Bản thân các Cookie có thể dụng để chia sẻ thông tin giữa các trang Web với nhau khiến người dùng càng thuận tiện hơn. Ví dụ: nếu bạn nhúng video YouTube trên trang web của mình thì người dùng sẽ thấy tùy chọn "Xem sau" trong trình phát. Nếu ấn nút “Xem sau", lựa chọn này được đưa vào Cookie. Nhờ đó nếu người dùng truy cập YouTube sẽ thấy video đó nằm trong danh sách xem sau của YouTube.
Vấn đề của Cookie
Tuy tiện lợi trong việc lưu trữ và chia sẻ thông tin, nhờ đó cá nhân hóa trải nghiệm của người dùng. Nhưng mặt trái của Cookie là nguy cơ của việc lộ và làm giả thông tin nhờ vào Cookie.
Một ví dụ nổi tiếng của nguy cơ này là những cuộc tấn công CSFR (Cross Site Request Forgery). CSFR nằm trong top 10 lổ hổng bảo mật website theo chuẩn OWASP vào năm 2010. Cụ thể CSFR lợi dụng việc lưu thông tin trong Cookie để đóng giả người dùng quen thuộc với trang web, nhờ đó lạm dụng các quyền hạn truy cập để xâm phạm an ninh thông tin.
Để hình dung cách CSFR hoạt động, tham khảo mô hình sau. Như bình thường, người dùng đăng nhập (login) vào site chính chủ (Trusted Site) và Cookie được lưu lại trên trình duyệt của người dùng.

Vấn đề xảy ra khi người dùng truy cập vào một site lừa đảo, website này sẽ cố gắng chiếm lấy Cookie của site chính chủ đang lưu trên tình duyệt của bạn.
Nhờ Cookie này mà Site lừa đảo có thể mạo danh người dùng thật, nhờ đó xâm phạm các thông tin khác trên site chính chủ.

Ví dụ bạn đăng nhập vào một trang web ngân hàng ngan-hang.com. Nếu kẻ tấn công lừa bạn vào www.lua-dao.com trong một tab trình duyệt khác. Từ mã lập trình trên www.lua-dao.com, kẻ tấn công cố gắng chuyển tiền từ tài khoản của bạn bằng cách giả lập gửi Form yêu cầu chuyển tiền về tài khoản của kẻ tấn công lên www.ngan-hang.com. Trình duyệt của bạn gửi cookie đã lưu các thông tin của bạn thuộc về www.ngan-hang.com. Nếu ww.nganhang.com thiếu mã chống CSRF, lệnh chuyển tiền được thực hiện thành công và bạn bị mất cắp.
Phòng chống nguy cơ mất an ninh thông tin của Cookie bằng Token
Để phòng chống các cuộc tấn công CSFR, mỗi lần truy cập, Website sẽ sinh ra Token để phản hồi cho Client. Client sẽ phải gửi các yêu cầu đi kèm Token này như một chứng nhận an ninh để khẳng định truy cập của mình là hợp lệ. Token này được sử dụng một lần duy nhất cho một Request, và Website phải sinh ra Token mới cho client.
Như vậy website lừa đảo không thể truy cập được Website chính chủ vì không thể có được Token để chứng nhận truy cập của mình là hợp pháp.
Tuy nhiên cách này sẽ sẽ buộc bạn phải thêm tính năng tạo ra các Token cho server. Quá trình sinh ra Token cũng như kiểm tra Token với mỗi truy cập của Client cũng khiến cho hiệu năng của toàn hệ thống bị suy giảm.
Thay thế cho Token, Samesite Cookie được giới thiệu vào năm 2016 bởi Google và đã được triển khai rộng rãi trên các trình duyệt nhân Chrominium từ năm 2017.
Samesite cookie là gì
SameSite Cookie là một thuộc tính thêm vào trong Cooke để yêu cầu chủ sở hữu trang web ghi rõ ràng nhãn cookie của Web khác, nhờ đó chỉ có thể chia sẻ Cookie với các trang web này. Như vậy một Website lừa đảo không thể giả mạo người dùng vì không thể lấy được Cookie.
.jpg)
Lợi ích Samesite cookie
Bằng Samesite Cookie, việc chống tấn công CSFR sẽ dễ dàng và hiiệu quả hơn. Trước tiên người làm hệ thống sẽ giảm chi phí do không phải lập trình bổ sung tính năng tạo và tương tác thông qua token ở cả server và client. Thứ hai là hiệu năng của hệ thống được nâng cao khi không phải sinh và đối chiếu token.
Ứng dụng Samesite Cookie như thế nào
SameSite là một thuộc tính của Set-Cookie trong HTTP response header giúp bạn ngăn cấm một site khác truy cập vào cookie hoặc cho phép trang chụ thể. SameSite nhận giá trị thuộc 1 trong 3 (None, Strict, LaX)
Đặt SameSite = Strict
Đúng như tên gọi của nó, giá trị của Strict phòng ngừa các web giả mạo rất mạnh mẽ. Trình duyệt sẽ ngăn dữ liệu cookie chuyển giữa các tên miền chéo khác trong mọi trường hợp. Phần lớn các trang web dịch vụ tài chính, ngân hàng, tiền điện tử sẽ chọn đặt giá trị SameSite của họ là Strict. SameSite = Strict sẽ lấy đi sự tiện dụng mà người dùng đã quen với khả năng chia sẻ thông tin của người dùng giữa các site, nhưng an toàn là trên hết.
Đặt SameSite = Lax
Để tăng sự tiện dụng nhưng vẫn duy trì tính an toàn nhất định, hãy đặt SameSite = Lax. Với cài đặt này, trình duyệt sẽ cho phép chia sẻ cookie giữa các trang web có cùng tên miền bắt chéo với nhau bắt nguồn từ yêu cầu GET cấp cao nhất.
Như vậy 2 trang web có thể chia sẻ dữ liệu cookie cho nhau miễn nó thuộc cùng một miền chéo, ví dụ hai web có cùng domain chính với nhau.
Đặt SameSite = None
Việc sử dụng Cookie sẽ bình thường như trước đây khi có thể chia sẻ thông tin giữa bất cứ trang web nào với nhau. Với thiết lập này, rất thận trọng xem xét thông tin gì thì lưu ở Cookie và thông tin nào không. Người dùng sẽ có nhiều thuận lợi khi nhờ thông tin cá nhân được lưu trữ mà các trang web sẽ tối ưu để cá nhân hóa theo trải nghiệm của riêng họ. Đánh đổi lại là nguy cơ bảo mật bị các trang web lừa đảo ăn cắp thông tin cá nhân.
Khả năng tương thích với các trình duyệt
Samesite phụ thuộc vào trình duyệt, nên người dùng cần phải chuyển đổi trình duyệt Chrome để có thể tận hưởng trải nghiệm cá nhân mà vẫn an toàn do SameSite mang lại. Dưới đây là cập nhật về khả năng tương thích với SameSite của các trình duyệt, cập nhật 05/2020

Hướng ứng dụng trong giải pháp Retail Solution Magestore POS
Trong các ứng dụng máy bán hàng tại cửa hàng bán lẻ, một trong các thách thức phổ biến là kết nối mạng bất ổn. Điều này khiến cho dữ liệu truyền giữa cửa hàng và server trung tâm bị gián đoạn, khiến thao tác bán hàng chậm gây tắc nghẽn khiến khách chờ mua hàng.
Thông thường giải pháp là lưu giữ liệu ofline tại cửa hàng và đẩy lên server khi có kết nối mạng thông thoáng. Để làm điều này sẽ phải dùng Cookie để ghi nhớ phiên đăng nhập của người dùng, chứa các định danh để truyền tải dữ liệu phù hợp với server.
Để phòng chống nguy cơ tấn công bằng CSFR, có hai cách
- Sử dụng Token với mỗi lần có yêu cầu từ client để giúp chứng thực. Điều này sẽ khiến hiệu năng của cả server và client bị suy giảm khi một ngày có rất nhiều thông tin giao dịch được gửi qua lại giữa client và server.
- Sử dụng Samesite Cookie với thuộc tính Strict. Nhờ đó không cần dùng Token mà vẫn có thể truyền tải dữ liệu giữa client và server. Không web nào khác có thể chiếm đoạn và giả mạo cookie để lấy trộm dữ liệu bán hàng và khách hàng của cửa hàng.
Nếu bạn là một ReactJS Developer, ưa thích làm sản phẩm quốc tế trong lĩnh vực bán lẻ - thương mại điện tử! Tham gia Tuyển dụng ReactJS Developer, môi trường làm việc từ xa, địa điểm tự do, quản lý linh hoạt theo Agile.