@manhng

Welcome to my blog!

Best way to use the Cookie

May 19, 2021 20:23

Best way to use the Cookie (edit)

Samesite cookie khiến thế giới web trở nên an toàn mà tiện lợi (magestore.com)

Giải thích các thuộc tính cookie HTTP an toàn, HttpOnly, SameSite và Set-Cookie (ichi.pro)

LocalStorage vs. Cookies: All You Need to Know About Storing JWT Tokens Securely in the Front-End - JavaScript inDepth

For example: Use of Cookies - Scientific American

  • Cookie
  • Unix
  • Fortune Cookie
  • Security concerns
  • EPIC
  • Doubleclick
  • Netscape
  • ComputerWorld
  • Internet Engineering Task Force (IETF)
  • IETF Proposals (đề xuất)
  • EU Cookie Law
  • Top 10 OWASP Vulnerabilities 2021
    • The Top 10 OWASP vulnerabilities in 2021 are:
      • Injection.
      • Broken authentication.
      • Sensitive data exposure.
      • XML external entities (XXE)
      • Broken access control.
      • Security misconfigurations.
      • Cross site scripting (XSS)
      • Insecure deserialization.
  • XSS attacks An XSS (cross-site scripting) ~ Cookie
  • CSRF (cross-site request forgery) Cookie

Cookie là gì?

Cookie là thông báo mà máy chủ web chuyển đến trình duyệt web của bạn khi bạn truy cập các trang web trên Internet. Trình duyệt của bạn lưu trữ mỗi tin nhắn trong một tệp nhỏ, được gọi là cookie.txt. Khi bạn yêu cầu một trang khác từ máy chủ, trình duyệt của bạn sẽ gửi lại cookie cho máy chủ. Những tệp này thường chứa thông tin về lần bạn truy cập trang web, cũng như bất kỳ thông tin nào bạn tình nguyện, chẳng hạn như tên và sở thích của bạn.

Theo Netscape:

Cookie là một cơ chế chung mà các kết nối phía máy chủ (chẳng hạn như tập lệnh CGI) có thể sử dụng để lưu trữ và truy xuất thông tin ở phía máy khách của kết nối. Việc bổ sung trạng thái phía máy khách đơn giản, liên tục, mở rộng đáng kể khả năng của các ứng dụng máy khách / máy chủ dựa trên Web.

Nói một cách dễ hiểu hơn, cookie là một cơ chế cho phép một trang web ghi lại các hoạt động đến và đi của bạn, thường là bạn không biết hoặc không đồng ý (consent).

Cho ví dụ về cách sử dụng Cookie?

Cookie được sử dụng phổ biến nhất để theo dõi hoạt động của trang web. Khi bạn truy cập một số trang web, máy chủ cung cấp cho bạn một cookie hoạt động như thẻ nhận dạng của bạn. Sau mỗi lần quay lại trang web đó, trình duyệt của bạn sẽ chuyển cookie đó trở lại máy chủ. Bằng cách này, máy chủ web có thể thu thập thông tin về những trang web nào được sử dụng nhiều nhất và những trang nào đang thu thập nhiều lượt truy cập lặp lại nhất.

Cookie cũng được sử dụng để mua sắm trực tuyến. Các cửa hàng trực tuyến thường sử dụng cookie để ghi lại bất kỳ thông tin cá nhân nào bạn nhập, cũng như bất kỳ mặt hàng nào trong giỏ hàng điện tử của bạn, do đó bạn không cần phải nhập lại thông tin này mỗi lần truy cập trang web.

Máy chủ có thể sử dụng cookie để cung cấp các trang web được cá nhân hóa. Khi bạn chọn tùy chọn tại một trang web sử dụng tùy chọn này, máy chủ sẽ đặt thông tin vào cookie. Khi bạn quay lại, máy chủ sử dụng thông tin trong cookie để tạo một trang tùy chỉnh cho bạn.

Lo ngại về bảo mật?

Chỉ trang web tạo cookie mới có thể đọc được cookie, vì vậy các máy chủ khác không có quyền truy cập vào thông tin của bạn. Ngoài ra, các máy chủ web chỉ có thể sử dụng thông tin mà bạn cung cấp hoặc các lựa chọn mà bạn thực hiện khi truy cập trang web dưới dạng nội dung trong cookie.

Quản trị viên web luôn có thể theo dõi quyền truy cập vào các trang web của họ, nhưng cookie làm cho việc này dễ dàng hơn. Trong một số trường hợp, cookie không đến từ trang web bạn đang truy cập mà từ các công ty quảng cáo quản lý quảng cáo biểu ngữ cho một nhóm trang web (chẳng hạn như DoubleClick.com).

Việc chấp nhận cookie không cung cấp cho máy chủ quyền truy cập vào máy tính của bạn hoặc bất kỳ thông tin cá nhân nào của bạn (ngoại trừ bất kỳ thông tin nào mà bạn có thể cố tình cung cấp, như đối với mua sắm trực tuyến). Ngoài ra, không thể thực thi mã từ cookie và không thể sử dụng cookie để phân phối vi-rút.

Xem và kiểm soát cookie như thế nào?

Vì lý do bảo mật, bạn có thể muốn xem các cookie hiện được lưu trữ trong trình duyệt của mình hoặc kiểm soát các trang web bạn chấp nhận cookie. Bạn cũng có thể quyết định chúng có thể được lưu trữ và sử dụng trong bao lâu. Hầu hết các trình duyệt hiện đại đều cung cấp khả năng kiểm soát cài đặt cookie; tham khảo các tệp trợ giúp của trình duyệt của bạn.

https://kb.iu.edu/d/ajfi (How do I view and control cookies in my web browser)

https://kb.iu.edu/d/ahic (Clear your web browser's cache, cookies, and history)

Hiểu rõ hơn về Cookie:

Cookie là gì?

Cookie không hơn gì một tệp văn bản rất nhỏ. Khi bạn truy cập một trang web, máy chủ lưu trữ trang web đó sẽ đặt tệp này trên máy tính của bạn, thường là ở đâu đó trong tệp cài đặt trình duyệt của bạn. Sau khi nó ở trên máy tính của bạn, cookie đóng vai trò rất quan trọng trong thẻ phần thưởng mà bạn có thể có cho cửa hàng tạp hóa địa phương của mình. Bạn sẽ không nhận được cà phê miễn phí với nó, nhưng lần sau khi bạn truy cập trang web đó, cookie sẽ cho trang web biết bạn là ai và bất kỳ thông tin liên quan nào khác cần thiết để cá nhân hóa trải nghiệm người dùng của bạn.

Thông tin chính xác được lưu trữ trên cookie sẽ khác nhau giữa các trang web, tùy thuộc vào thông tin nào cần thiết cho trải nghiệm xem cụ thể đó. Trong hầu hết các trường hợp, nó sẽ xác định bạn theo một cách nào đó. Ví dụ: nếu trang web yêu cầu đăng nhập, cookie có thể cho phép bạn tiếp tục đăng nhập hoặc ít nhất là để trang web ghi nhớ tên người dùng của bạn. Nếu bạn luôn sử dụng cùng một trang web thời tiết để nhận dự báo địa phương của mình, cookie cho phép trang web đó ghi nhớ vị trí của bạn, vì vậy bạn sẽ không phải nhập lại mỗi lần.

Các trang web sử dụng cookie quảng cáo có thể đặt thông tin về các mặt hàng bạn đã xem hoặc mua, sau đó có thể được sử dụng để tùy chỉnh quảng cáo bạn thấy trong tương lai. Quay trở lại với sự tương tự về thẻ cửa hàng của chúng tôi, điều này rất giống với việc cửa hàng tạp hóa của bạn tặng bạn phiếu giảm giá cho những hạt cà phê Starbucks đặc biệt của họ, bởi vì lần trước khi đến đây bạn đã mua một lon Folgers.

Có mấy loại Cookie?

Có ba loại cookie chính.

Session Cookie

Cookie phiên là cookie tạm thời. Chúng lưu trữ thông tin về phiên hiện tại của bạn và sau đó sẽ bị xóa khi trình duyệt của bạn đóng. Những loại cookie này thường được sử dụng để theo dõi những thứ như các mặt hàng bạn cho vào giỏ hàng hoặc để lưu trữ thông tin bảo mật tạm thời, chẳng hạn như có thể cần thiết khi truy cập trang web của ngân hàng của bạn. Đây là lý do tại sao, khi bạn đăng xuất khỏi trang web của ngân hàng, thông thường nó sẽ khuyên bạn đóng cửa sổ trình duyệt của mình. Làm như vậy sẽ loại bỏ bất kỳ cookie phiên nào. Cookie phiên ít có khả năng gây ra lo ngại về quyền riêng tư nhất và nhiều cookie trong số đó thuộc danh mục "thực sự cần thiết" đó.

Permanent Cookie

Cookie vĩnh viễn, đôi khi được gọi là cookie liên tục hoặc được lưu trữ, được đặt trên ổ cứng của thiết bị của bạn và không bị xóa khi trình duyệt của bạn bị đóng. Những cookie này có thể được sử dụng để nhận ra người dùng khi họ quay lại trang web của bạn, theo dõi các kiểu xem của họ trong trang web của bạn nhằm cải thiện trải nghiệm người dùng và cung cấp dữ liệu cho các chương trình phân tích của bạn. Cookie vĩnh viễn có thể lưu trữ thông tin trong một khoảng thời gian không xác định, vì vậy chúng rất hữu ích khi cố gắng tạo trải nghiệm người dùng tùy chỉnh hoặc phân tích hành vi của khách truy cập quay lại. Chúng cũng có thể được sử dụng cho mục đích quảng cáo và khi có quảng cáo của bên thứ ba, có thể khiến thông tin người dùng hoặc thông tin máy tính của bạn bị chia sẻ với các trang web khác. Đây là lúc mà phần lớn mối quan tâm về quyền riêng tư đối với cookie xuất hiện.

Browser independent cookies

Các cookie độc ​​lập của trình duyệt, chẳng hạn như cookie Flash hoặc Silverlight, hoạt động giống như cookie vĩnh viễn, ngoại trừ chúng không được trình duyệt của bạn lưu trữ. Thay vào đó, chúng được lưu trữ trong các tệp chương trình tương ứng. Điều này làm cho chúng khó xóa hơn một chút, vì bạn có thể cần phải cài đặt một chương trình riêng biệt, chẳng hạn như Flash Cookie Remover của Adobe. Đối với chủ sở hữu trang web, họ có thể cung cấp một công cụ có giá trị, vì chúng có thể được sử dụng để sao lưu dữ liệu cookie truyền thống. Bằng cách đó, ngay cả khi người dùng xóa các tệp cookie của họ, trang web của bạn vẫn có thể nhận ra chúng và cung cấp trải nghiệm tùy chỉnh tương tự bằng cách truy xuất thông tin của họ từ cookie Flash. Tất nhiên, nếu bạn đang sử dụng cookie độc ​​lập của trình duyệt trên trang web của mình, bạn sẽ cần phải tiết lộ điều này.

Nâng cao:

Cookie Consent

Cookie Consent - Privacy Policies

EU Cookie Laws

Ultimate Guide to EU Cookie Laws - Privacy Policies

Web Development và Cookie

Everything You Need to Know About Cookies for Web Development (freecodecamp.org)

Cookies Local Storage Session Storage
Capacity 4KB 10MB 5MB
Accessible from Any window Any window Same tab
Expires Manually set Never On tab close
Storage location Browser and server Browser only Browser only
Sent with requests Yes No No

Kiến thức cần phải nắm chắc về Cookie

Cookie là một công nghệ cũ hơn nhiều và có dung lượng rất hạn chế. Tuy nhiên, có khá nhiều điều bạn có thể làm với chúng. Và kích thước nhỏ của chúng giúp trình duyệt dễ dàng gửi cookie với mỗi yêu cầu đến máy chủ.

Cũng cần nhắc lại rằng các trình duyệt chỉ cho phép cookie hoạt động từ một miền vì lý do bảo mật.

Vì vậy, nếu bạn đăng nhập vào ngân hàng của mình tại ally.com, thì cookie sẽ chỉ hoạt động trong miền đó và các miền phụ của miền đó. Ví dụ: cookie ally.com của bạn sẽ hoạt động trên ally.com, ally.com/about và tên miền phụ www.ally.com, nhưng không hoạt động trên axos.com.

Điều này có nghĩa là, ngay cả khi bạn có tài khoản và đăng nhập tại cả ally.com và axos.com, các trang web đó sẽ không thể đọc cookie của nhau.

Điều quan trọng cần nhớ là cookie của bạn được gửi theo mọi yêu cầu bạn đưa ra trong trình duyệt. Điều này rất thuận tiện, nhưng có một số tác động bảo mật nghiêm trọng mà chúng tôi sẽ đề cập sau.

Cuối cùng, nếu có một điều bạn rút ra khỏi bài viết này, chỉ cần nhớ rằng cookie được dùng để đọc và gửi một cách công khai, vì vậy bạn không bao giờ nên lưu trữ thông tin nhạy cảm như mật khẩu trong đó.

Knowledge Base | Cookie

Cookies are a much older technology, and have a very limited capacity. Still, there's quite a bit you can do with them. And their small size makes it easy for the browser to send cookies with each request to the server.

It's also worth mentioning that browsers only allow cookies to work from one domain for security reasons.

So if you sign in to your bank at, say, ally.com, then cookies will only work within that domain and its subdomains. For example, your ally.com cookie will work on ally.com, ally.com/about, and the subdomain www.ally.com, but not axos.com.

This means that, even if you have accounts and are signed in at both ally.com and axos.com, those sites won't be able to read each other's cookies.

It's important to remember that your cookies are sent with every request you make in the browser. This is very convenient, but has some serious security implications we'll get into later.

Finally, if there's one thing you take away from this article, just remember that cookies are meant to be openly read and sent, so you should never store sensitive information like passwords in them.

EditThisCookie: Chrome Extension

Chrome Extensions EditThisCookie

ASP.NET và Cookie

The ultimate guide to secure cookies with web.config in .NET | elmah.io (HAY HAY HAY)

How can I set the 'secure' flag for cookies in an ASP.NET MVC website? - Stack Overflow

HttpOnly Flag

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.

Secure Flag

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

Cookie attributes:

Secure - Cookie will be sent in HTTPS transmission only.

HttpOnly - Don't allow scripts to access cookie. You can set both of the Secure and HttpOnly.

Domain - specify the hosts to which the cookie will be sent.

Path - create scopes, cookie will be sent only if the path matches.

Expires - indicates the maximum lifetime of the cookie.

SameSite - indicates the maximum lifetime of the cookie.

SameSite

SameSite cookies explained (web.dev)

If the user is on www.web.dev and requests an image from static.web.dev then that is a same-site request.

If the user is on your-project.github.io and requests an image from my-project.github.io that's a cross-site request.

SameSite | OWASP

SameSite prevents the browser from sending this cookie along with cross-site requests. The main goal is to mitigate the risk of cross-origin information leakage. It also provides some protection against cross-site request forgery attacks. Possible values for the flag are none, lax, or strict.

The strict value will prevent the cookie from being sent by the browser to the target site in all cross-site browsing contexts, even when following a regular link. For example, for a GitHub-like website this would mean that if a logged-in user follows a link to a private GitHub project posted on a corporate discussion forum or email, GitHub will not receive the session cookie and the user will not be able to access the project.

A bank website however most likely doesn’t want to allow any transactional pages to be linked from external sites so the strict flag would be most appropriate here.

The lax value provides a reasonable balance between security and usability for websites that want to maintain user’s logged-in session after the user arrives from an external link. In the above GitHub scenario, the session cookie would be allowed when following a regular link from an external website while blocking it in CSRF-prone request methods (e.g. POST).

The none value won’t give any kind of protection. The browser attaches the cookies in all cross-site browsing contexts.

The default value of the SameSite attribute differs with each browser, therefore it is advised to explicitly set the value of the attribute.

As of November 2017 the SameSite attribute is implemented in Chrome, Firefox, and Opera. Since version 12.1 Safari also supports this. Windows 7 with IE 11 lacks support as of December 2018, see caniuse.com below.

SameSite ngăn trình duyệt gửi cookie này cùng với các yêu cầu trên nhiều trang web. Mục tiêu chính là giảm thiểu nguy cơ rò rỉ thông tin nguồn gốc chéo. Nó cũng cung cấp một số biện pháp bảo vệ chống lại các cuộc tấn công giả mạo yêu cầu trên nhiều trang web. Các giá trị có thể có cho cờ là không, lỏng lẻo hoặc nghiêm ngặt.

Giá trị nghiêm ngặt sẽ ngăn trình duyệt gửi cookie đến trang web đích trong tất cả các ngữ cảnh duyệt web chéo, ngay cả khi theo một liên kết thông thường. Ví dụ: đối với một trang web giống GitHub, điều này có nghĩa là nếu người dùng đã đăng nhập theo liên kết đến một dự án GitHub riêng tư được đăng trên diễn đàn thảo luận của công ty hoặc email, GitHub sẽ không nhận được cookie phiên và người dùng sẽ không thể để truy cập dự án.

Tuy nhiên, một trang web ngân hàng rất có thể không muốn cho phép bất kỳ trang giao dịch nào được liên kết từ các trang web bên ngoài, do đó, cờ nghiêm ngặt sẽ là thích hợp nhất ở đây.

Giá trị lỏng lẻo cung cấp sự cân bằng hợp lý giữa bảo mật và khả năng sử dụng cho các trang web muốn duy trì phiên đăng nhập của người dùng sau khi người dùng đến từ một liên kết bên ngoài. Trong tình huống GitHub ở trên, cookie phiên sẽ được phép khi truy cập vào một liên kết thông thường từ một trang web bên ngoài trong khi chặn nó trong các phương pháp yêu cầu có CSRF (ví dụ: POST).

Giá trị không có sẽ không cung cấp bất kỳ loại bảo vệ nào. Trình duyệt đính kèm các cookie trong tất cả các bối cảnh duyệt web trên nhiều trang web.

Giá trị mặc định của thuộc tính SameSite khác với từng trình duyệt, do đó, bạn nên đặt giá trị của thuộc tính một cách rõ ràng.

Kể từ tháng 11 năm 2017, thuộc tính SameSite được triển khai trong Chrome, Firefox và Opera. Kể từ phiên bản 12.1 Safari cũng hỗ trợ điều này. Windows 7 với IE 11 không được hỗ trợ kể từ tháng 12 năm 2018, hãy xem caniuse.com bên dưới.

WebMvc.UnitTest

manhng83/WebMvc: ASP.NET MVC 5 + Web API 2 + EF 6 + UoW + Repository + MediatR + Autofac + AutoMapper + OWIN + SignalR + Unit Testing + Clean Architecture (github.com)

JavaScript và Cookie

function getCookie(cname) {
  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length);
    }
  }
  return "";
}

function
 setCookie(cname, cvalue, exdays) {
  var d = new Date();
  d.setTime(d.getTime() + (exdays*24*60*60*1000));
  var expires = "expires="+ d.toUTCString();
  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

Xem trợ giúp của trình duyệt để kiểm soát Cookie bên dưới:

Chrome

  1. From the Chrome menu in the top right corner of the browser, select Settings.
  2. At the bottom of the page, click Show advanced settings....
  3. Under Privacy, select Content settings....
    • To manage cookie settings, check or uncheck the options under "Cookies".
    • To view or remove individual cookies, click All cookies and site data... and hover the mouse over the entry. Select the X that appears next to the cookie to remove it.
    • To delete all cookies, click All cookies and site data... and select Remove all.

Firefox

  1. From the Tools menu, select Options.

    If the menu bar is hidden, press Alt to make it visible.

  2. At the top of the window that appears, click Privacy.
    • To manage cookie settings, from the drop-down menu under "History", select Use custom settings for history. Enable or disable the settings by checking or unchecking the boxes next to each setting:
      • To allow sites to set cookies on your computer, select Accept cookies from sites. To specify which sites are always or never allowed to use cookies, click Exceptions.
      • To accept third-party cookies, check Accept third-party cookies. In the "Keep until:" drop-down menu, select the time period you wish to keep cookies on your computer.
      • To specify how the browser should clear the private data it stores, check Clear history when Firefox closes. Click Settings.... Check the items to be cleared when you close Firefox.
    • To view or remove individual cookies, click remove individual cookies.
    • To remove all cookies, from the History menu, select clear your recent history. Click the arrow next to "Details" to expand the menu, check the items you want to clear, and then click Clear Now.

Internet Explorer

Note:
UITS strongly recommends that you use a supported browser, and not Internet Explorer (IE). IE 11, the last major version, no longer supports Microsoft Teams, and will stop supporting Microsoft 365 apps in August 2021.
  1. From the Tools menu, or the Tools drop-down at the upper right, select Internet Options.

    If the menu bar is hidden, press Alt to make it visible.

    • To manage cookie settings, select the Privacy tab and click Advanced. To override the automatic cookie settings, click Override automatic cookie handling and then make your selections using the radio buttons.
    • To view or remove individual cookies, select the General tab. Under "Browsing history", click Settings. Select either View objects or View files.
    • To delete all cookies, under "Browsing history", click Delete.... Check Cookies and then click Delete.

This content is adapted from Microsoft Help and Support article 278835.

Safari

Note: To determine the version of Safari you're using, from the Safari menu, select About Safari.

Safari 5.1 and later

  1. In Safari, from the Safari menu, select Preferences....
  2. In the Safari preferences window, click Privacy.
    • To manage cookie settings, next to "Block cookies", select From third parties and advertisers, Always, or Never.
    • To view or remove individual cookies, click Details.... Select the cookie to delete and click Remove.
    • To delete all cookies, select Remove All Website Data... In the window that appears, select Remove Now.

Safari 5.0.x and earlier

  1. In Safari, from the Safari menu, select Preferences....
  2. In the Safari preferences window, click Security.
    • To manage cookie settings, next to "Accept Cookies:", select Always or Only from sites you navigate to. To disable cookies, select Never.
    • To view and delete individual cookies, click Show Cookies. In the sheet that drops down, you can browse the list of cookies on your computer.
    • To delete all cookies, click Show Cookies. In the window that appears, select Remove All.

Categories

Recent posts