HttpOnly Flag và Secure Flag là gì?

Công Nghệ
HttpOnly Flag và Secure Flag là gì?
Bài viết được sự cho phép của tác giả Kiên Nguyễn Trước tiên, nếu bạn nào chưa có cái nhìn qua về cookies thì có thể tham khảo bài viết này . Cookies thật sự rất hữu ích, thuận tiện khi sử dụng nhưng cũng tồn tại không ít rủi ro. Bài viết sau đây giúp tìm hiểu rõ thêm về 2 thuộc tính giúp bảo vệ cookies là httponly và secure . Bí kíp tạo website nhờ vào GitHub và Cloudflare Cách gỡ bỏ Adobe Flash. Tại sao Flash bị Adobe khai tử? Http cookies – tiện lợi nhưng không hề an toàn. 1. Httponly Flag. 1.1 Ngày buồn khi mất cookies. Chuyện kể rằng: 30/2/2001, một ngày đẹp trời, không nắng, cũng méo mưa, thằng XXX (mean Tèo, Toàn, … not porn) lưới web thì thấy trang https://ZZZ.com . Với chút kiến thức hèn mọn, khi thấy website có sử dụng SSL thì XXX yên tâm lắm, login ngay. Ọt, ọt, ọt, tẹt, tẹt, tẹt , server hì hục làm việc, xác cmn định đây chính xác là thằng XXX, server trả về authKey lưu ở cookies xác nhận đã đăng nhập. Đang định xem ít phim thì PING – có email mới. Hí hửng mở xem, tưởng đâu mail công việc, nào ngờ chỉ là một đường link vô hồn với tên miền khêu gợi http://choiemdi.com.vn . Trông có vẻ ngon, đang thèm , XXX click vào ngay. Bùm, toàn bộ thông tin profile lưu ở ZZZ đều bị mất. Hết chuyện. Tại sao?. Tại sao?. Có ma mới biết được!. Nhưng sau khi đọc bài này, chắc con ma kia cũng có thể giải thích tại sao thằng ZZZ lại bị mất thông tin. Nếu đọc xong mà không giải thích được, phải chăng các bạn...

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Trước tiên, nếu bạn nào chưa có cái nhìn qua về cookies thì có thể tham khảo bài viết này. Cookies thật sự rất hữu ích, thuận tiện khi sử dụng nhưng cũng tồn tại không ít rủi ro. Bài viết sau đây giúp tìm hiểu rõ thêm về 2 thuộc tính giúp bảo vệ cookies là httponly và secure.

Http cookies – tiện lợi nhưng không hề an toàn.

1. Httponly Flag.

1.1 Ngày buồn khi mất cookies.

Chuyện kể rằng:

30/2/2001, một ngày đẹp trời, không nắng, cũng méo mưa, thằng XXX (mean Tèo, Toàn, … not porn) lưới web thì thấy trang https://ZZZ.com. Với chút kiến thức hèn mọn, khi thấy website có sử dụng SSL thì XXX yên tâm lắm, login ngay. Ọt, ọt, ọt, tẹt, tẹt, tẹt, server hì hục làm việc, xác cmn định đây chính xác là thằng XXX, server trả về authKey lưu ở cookies xác nhận đã đăng nhập. Đang định xem ít phim thì PING – có email mới. Hí hửng mở xem, tưởng đâu mail công việc, nào ngờ chỉ là một đường link vô hồn với tên miền khêu gợi http://choiemdi.com.vn. Trông có vẻ ngon, đang thèm , XXX click vào ngay. Bùm, toàn bộ thông tin profile lưu ở ZZZ đều bị mất.

Hết chuyện.

Tại sao?. Tại sao?. Có ma mới biết được!. Nhưng sau khi đọc bài này, chắc con ma kia cũng có thể giải thích tại sao thằng ZZZ lại bị mất thông tin. Nếu đọc xong mà không giải thích được, phải chăng các bạn còn thua cả con ma?. =)))

ĐM, lại chửi khéo bố m rồi, bố m đang đọc bài của mày đấy.

1.2 Tại sao lại thế?.

Nguyên nhân XXX bị mất thông tin cá nhân là do quá chủ quan khi click đọc email. Ngoài ra, do cookies phản hồi từ server không được bảo vệ bởi httponly nên đã bị đối tượng xấu lấy mất cookies xác thực đăng nhập -> dẫn tới mất thông tin.

Trường hợp giá trị httponly không được set hoặc set bằng false thì chỉ cần thực hiện một câu lệnh javascript đơn giản là đã có thông tin cookie.

// Nội dung cookie bị đánh cắp có thể sử dụng cho nhiều mục đích
// httponly flag = false hoặc không được set
document.cookie = "authKey cookie của XXX";

Về mặt bản chất, cũng có thể hiểu đây như là một cuộc tấn công XSS, đối tượng gửi email sẽ execute một đoạn script truy xuất dữ liệu từ cookie, đánh cắp thông tin, thay thế người dùng giao tiếp với server.

rủi to khi giao tiếp client và serverrủi to khi giao tiếp client và serverHình ảnh mô tả cách thức tấn công bằng XSS (Cros site scripting)

Xã hội phát triển, trải nghiệm người dùng với website càng ngày càng được yêu cầu cao. Người ta chỉ muốn login một lần duy nhất, đóng tab shopping mà vẫn lưu giỏ hàng, … Chính vì vậy, cookie cũng được sử dụng rộng rãi hơn, kéo theo nhiều rủi ro hơn.

1.3 Httponly ra đời.

Để tăng cường bảo mật thông tin lưu trữ trong cookie, httponly ra đời.

Mục đích của thuộc tính httponly là bảo về cookie khỏi việc truy cập trái phép từ browser. Chỉ lưu và gửi kèm cookie phản hồi từ client tới server. Việc hạn chế sự can thiệp từ trình duyệt giúp hạn chế rủi ro từ các cuộc tấn công đánh cắp cookie.

httponly được bật là true cho các cookies quan trọnghttponly được bật là true cho các cookies quan trọnghttponly luôn set là true cho các item cookies quan trọng (ngân hàng VIB)
Khi truy xuất nội dung cookie, chỉ duy nhất ARRAffinity là có thể đọc được

If one cookie is HttpOnly, it cannot be accessed by client JavaScript, which means hackers cannot read the cookie value and send it to his own server, not even know whether this cookie exist.

Nếu cookie được set cờ HttpOnly, nó không thể bị truy cập bởi client thông qua Javascript. Điều đó có nghĩa rằng hacker sẽ không thể đọc được giá trị của cookie và gửi về server của hắn, thậm chí cũng không thể biết cookie có tồn tại hay không.

httponly-funnyhttponly-funny

1.4 Liệu rằng đã đủ?.

Ê, thế mỗi lần tao phản rồi cookies thì set cái cờ này thành true như mấy ông ngân hàng là an toàn rồi chứ gì?.

Xin thưa là KHÔNG. Mặc dù httponly giúp bảo vệ việc truy cập cookies, nhưng không có nghĩa chỉ sử dụng httponly thì cookies đã được an toàn. Trường hợp cookies phản hồi từ server về tới client chỉ thông qua giao thức HTTP?. Tất nhiên, dữ liệu không được mã hóa, một ai đó có thể đánh cặp dữ liệu này trên dọc đường phản hồi từ server tới client.

giao tiếp client và server chỉ bật httponly liệu có đủgiao tiếp client và server chỉ bật httponly liệu có đủMột mình httponly liệu rằng có đủ?

1.5 Bảo vệ như thế nào?

Ngay khi cookie được tạo và trả về cho client, khi cờ httponly được bật là true. Cả client, browser đều sẽ biết cookie này chỉ được phép truy cập ở máy chủ, mọi phương thức khác cố gắng truy cập thông tin cookie đều bị từ chối.

Ngoài ra, httponly còn có thể:

  1. Hạn chế quyền truy cập tới document.cookie trong IE7, Firefox 3 va Opera 9.5.
  2. Xóa thông tin cookie trong header, khi sử dụng XMLHttpObject.getAllResponseHeaders() – IE 7 .
  3. XMLHttpObject chỉ có thể được gửi trả về domain gốc.

2. Secure Flag

Như phần HttpOnly phía trên ta đã tìm hiểu, chỉ sử dụng riêng HttpOnly là không đủ. Nếu việc bảo mật ở phía client và browser tốt, nhưng lại sử dụng một phương thức transfer kém thì cookie chưa tới được tay người sử dụng đã bị mất (kết hợp Man in the Middle và Session Hijacking). Những cookie đặc biệt quan trọng như (Auth, Session, …) đều có yêu cầu bảo mật rất cao, vì vậy những cookies này chỉ nên được truyền qua những giao thức bảo mật như HTTPS.

Browsers which support the secure flag will only send cookies with the secure flag when the request is going to a HTTPS page. Said in another way, the browser will not send a cookie with the secure flag set over an unencrypted HTTP request.

Trình duyệt hỗ trợ cờ secure sẽ chỉ gửi cookie có kèm cờ này thông qua giao thức HTTPS. Nói theo cách khác, trình duyệt sẽ không gửi cookie thông qua HTTP (không mã hóa dữ liệu).

Đối với môi trường ASP.NET, thao tác bật cờ tương đối đơn giản (thay đổi file Web.config)

Web.config: <httpCookies requireSSL="true" />

Ở một số trang, khi tự động redirect từ http sang https thì client đã có cookie.

Để đảm bảo an toàn, khuyến nghị chung là nên set cờ này cho các cookie quan trọng (website của bạn đã đăng kí thành công SSL/TLS).

hãy set giá trị cho cả httponly flag và secure flag để đảm bảo an toànhãy set giá trị cho cả httponly flag và secure flag để đảm bảo an toànNên dùng cả 2 cờ cho cookie khi có thể.

3. Tổng kết

Cả HttpOnly flag và Secure flag đều giúp chúng ta nâng cao tính an toàn khi sử dụng cookie, giảm thiểu nguy cơ khi bị dòm ngó bởi các cuộc tấn công như XSS. Tuy nhiên, với mức độ sử dụng cookie thường xuyên và liên tục như hiện nay. Cũng không có gì ngạc nhiên khi sắp tới có thêm một số lỗ hổng nào nữa để ăn cắp cookie. Cuộc đấu giữa người bảo vệ và ăn cắp cookie vẫn đang diễn ra liên tục, vì vậy hãy luôn cập nhật kiến thức của mình về COOKIE (BÁNH NGON NHƯNG KHÔNG HỀ AN TOÀN)

4. Tham khảo

Các bạn có thể đọc thêm các bài viết khác ở đây:

OWASP HttpOnly Flag
OWAS Secure Flag
No cookie for you
Web security: hardening HTTP cookies
Protecting Your Cookies: HttpOnly

Again, thanks for reading, love u so much!

Bài viết gốc được đăng tải tại kieblog.vn

Có thể bạn quan tâm:

Xem thêm Việc làm IT hấp dẫn trên Station D

Bài viết liên quan

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bộ cài đặt Laravel Installer đã hỗ trợ tích hợp Jetstream

Bài viết được sự cho phép của tác giả Chung Nguyễn Hôm nay, nhóm Laravel đã phát hành một phiên bản chính mới của “ laravel/installer ” bao gồm hỗ trợ khởi động nhanh các dự án Jetstream. Với phiên bản mới này khi bạn chạy laravel new project-name , bạn sẽ nhận được các tùy chọn Jetstream. Ví dụ: API Authentication trong Laravel-Vue SPA sử dụng Jwt-auth Cách sử dụng Laravel với Socket.IO laravel new foo --jet --dev Sau đó, nó sẽ hỏi bạn thích stack Jetstream nào hơn: Which Jetstream stack do you prefer? [0] Livewire [1] inertia > livewire Will your application use teams? (yes/no) [no]: ... Nếu bạn đã cài bộ Laravel Installer, để nâng cấp lên phiên bản mới bạn chạy lệnh: composer global update Một số trường hợp cập nhật bị thất bại, bạn hãy thử, gỡ đi và cài đặt lại nha composer global remove laravel/installer composer global require laravel/installer Bài viết gốc được đăng tải tại chungnguyen.xyz Có thể bạn quan tâm: Cài đặt Laravel Làm thế nào để chạy Sql Server Installation Center sau khi đã cài đặt xong Sql Server? Quản lý các Laravel route gọn hơn và dễ dàng hơn Xem thêm Tuyển dụng lập trình Laravel hấp dẫn trên Station D

By stationd
Principle thiết kế của các sản phẩm nổi tiếng

Principle thiết kế của các sản phẩm nổi tiếng

Tác giả: Lưu Bình An Phù hợp cho các bạn thiết kế nào ko muốn làm code dạo, design dạo nữa, bạn muốn cái gì đó cao hơn ở tầng khái niệm Nếu lập trình chúng ta có các nguyên tắc chung khi viết code như KISS , DRY , thì trong thiết kế cũng có những nguyên tắc chính khi làm việc. Những nguyên tắc này sẽ là kim chỉ nam, nếu có tranh cãi giữa các member trong team, thì cứ đè nguyên tắc này ra mà giải quyết (nghe hơi có mùi cứng nhắc, mình thì thích tùy cơ ứng biến hơn) Tìm các vị trí tuyển dụng designer lương cao cho bạn Nguyên tắc thiết kế của GOV.UK Đây là danh sách của trang GOV.UK Bắt đầu với thứ user cần Làm ít hơn Thiết kế với dữ liệu Làm mọi thứ thật dễ dàng Lặp. Rồi lặp lại lần nữa Dành cho tất cả mọi người Hiểu ngữ cảnh hiện tại Làm dịch vụ digital, không phải làm website Nhất quán, nhưng không hòa tan (phải có chất riêng với thằng khác) Cởi mở, mọi thứ tốt hơn Bao trừu tượng luôn các bạn, trang Gov.uk này cũng có câu tổng quát rất hay Thiết kế tốt là thiết kế có thể sử dụng. Phục vụ cho nhiều đối tượng sử dụng, dễ đọc nhất nhất có thể. Nếu phải từ bỏ đẹp tinh tế – thì cứ bỏ luôn . Chúng ta tạo sản phẩm cho nhu cầu sử dụng, không phải cho người hâm mộ . Chúng ta thiết kế để cả nước sử dụng, không phải những người đã từng sử dụng web. Những người cần dịch vụ của chúng ta nhất là những người đang cảm thấy khó sử dụng dịch...

By stationd
Hiểu về trình duyệt – How browsers work

Hiểu về trình duyệt – How browsers work

Bài viết được sự cho phép của vntesters.com Khi nhìn từ bên ngoài, trình duyệt web giống như một ứng dụng hiển thị những thông tin và tài nguyên từ server lên màn hình người sử dụng, nhưng để làm được công việc hiển thị đó đòi hỏi trình duyệt phải xử lý rất nhiều thông tin và nhiều tầng phía bên dưới. Việc chúng ta (Developers, Testers) tìm hiểu càng sâu tầng bên dưới để nắm được nguyên tắc hoạt động và xử lý của trình duyệt sẽ rất hữu ích trong công việc viết code, sử dụng các tài nguyên cũng như kiểm thử ứng dụng của mình. Cách để npm packages chạy trong browser Câu hỏi phỏng vấn mẹo về React: Component hay element được render trong browser? Khi hiểu được cách thức hoạt động của trình duyệt chúng ta có thể trả lời được rất nhiều câu hỏi như: Tại sao cùng một trang web lại hiển thị khác nhau trên hai trình duyệt? Tại sao chức năng này đang chạy tốt trên trình duyệt Firefox nhưng qua trình duyệt khác lại bị lỗi? Làm sao để trang web hiển thị nội dung nhanh và tối ưu hơn một chút?… Hy vọng sau bài này sẽ giúp các bạn có một cái nhìn rõ hơn cũng như giúp ích được trong công việc hiện tại. 1. Cấu trúc của một trình duyệt Trước tiên chúng ta đi qua cấu trúc, thành phần chung và cơ bản nhất của một trình duyệt web hiện đại, nó sẽ gồm các thành phần (tầng) như sau: Thành phần nằm phía trên là những thành phần gần với tương tác của người dùng, càng phía dưới thì càng sâu và nặng về xử lý dữ liệu hơn tương tác. Nhiệm...

By stationd
Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Thị trường EdTech Vietnam- Nhiều tiềm năng nhưng còn bị bỏ ngỏ tại Việt Nam

Lĩnh vực EdTech (ứng dụng công nghệ vào các sản phẩm giáo dục) trên toàn cầu hiện nay đã tương đối phong phú với nhiều tên tuổi lớn phân phối đều trên các hạng mục như Broad Online Learning Platforms (nền tảng cung cấp khóa học online đại chúng – tiêu biểu như Coursera, Udemy, KhanAcademy,…) Learning Management Systems (hệ thống quản lý lớp học – tiêu biểu như Schoology, Edmodo, ClassDojo,…) Next-Gen Study Tools (công cụ hỗ trợ học tập – tiểu biểu như Kahoot!, Lumosity, Curriculet,…) Tech Learning (đào tạo công nghệ – tiêu biểu như Udacity, Codecademy, PluralSight,…), Enterprise Learning (đào tạo trong doanh nghiệp – tiêu biểu như Edcast, ExecOnline, Grovo,..),… Hiện nay thị trường EdTech tại Việt Nam đã đón nhận khoảng đầu tư khoảng 55 triệu đô cho lĩnh vực này nhiều đơn vị nước ngoài đang quan tâm mạnh đến thị trường này ngày càng nhiều hơn. Là một trong những xu hướng phát triển tốt, và có doanh nghiệp đã hoạt động khá lâu trong ngành nêu tại infographic như Topica, nhưng EdTech vẫn chỉ đang trong giai đoạn sơ khai tại Việt Nam. Tại Việt Nam, hệ sinh thái EdTech trong nước vẫn còn rất non trẻ và thiếu vắng nhiều tên tuổi trong các hạng mục như Enterprise Learning (mới chỉ có MANA), School Administration (hệ thống quản lý trường học) hay Search (tìm kiếm, so sánh trường và khóa học),… Với chỉ dưới 5% số dân công sở có sử dụng một trong các dịch vụ giáo dục online, EdTech cho thấy vẫn còn một thị trường rộng lớn đang chờ được khai phá. *** Vừa qua Station D đã công bố Báo cáo Vietnam IT Landscape 2019 đem đến cái nhìn toàn cảnh về các ứng dụng công...

By stationd