คุกกี้ใน JSP พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

คุกกี้ JSP คือไฟล์ข้อความขนาดเล็กที่จัดเก็บไว้ในเบราว์เซอร์ของลูกค้า ซึ่งช่วยให้แอปพลิเคชัน JSP ทำงานได้อย่างมีประสิทธิภาพ tracสามารถจัดการเซสชัน k รายการ จดจำการตั้งค่าของผู้ใช้ และปรับแต่งการตอบสนองในคำขอ HTTP หลายรายการโดยใช้ API javax.servlet.http.Cookie และส่วนหัวการตอบสนองมาตรฐาน

  • 🍪 ความหมาย: คุกกี้ JSP คือไฟล์ข้อความแบบคีย์-ค่าที่จัดเก็บไว้ในอุปกรณ์ของไคลเอ็นต์ และจะถูกอ่านผ่านอ็อบเจ็กต์คำขอในการเรียกใช้ HTTP ครั้งต่อๆ ไป
  • 🔐 สัญญาณเตือนภัยด้านความปลอดภัย: การตั้งค่า Secure, HttpOnly และแอตทริบิวต์ SameSite ที่ทันสมัย ​​จะช่วยปกป้องคุกกี้ JSP จากการดักฟัง การเข้าถึงสคริปต์ และการปลอมแปลงคำขอข้ามเว็บไซต์
  • ⏱️ การควบคุมตลอดอายุการใช้งาน: เมธอด setMaxAge จะกำหนดว่าคุกกี้ JSP จะถูกเก็บไว้ในดิสก์อย่างถาวรหรือจะถูกลบออกโดยอัตโนมัติเมื่อเซสชันของเบราว์เซอร์สิ้นสุดลง
  • API มาตรฐาน: คลาส javax.servlet.http.Cookie พร้อมด้วย response.addCookie และ request.getCookies ครอบคลุมการสร้าง การส่ง การดึงข้อมูล และการลบคุกกี้ใน Servlet 4.x และ 5.x
  • 🧪 ตัวอย่างการทำงาน: ตัวอย่างการใช้งานชื่อผู้ใช้และอีเมลแบบสองหน้า แสดงให้เห็นว่าคุกกี้ JSP ถูกสร้าง ส่ง เก็บรักษาไว้เป็นเวลาสิบชั่วโมง และอ่านกลับมาในการร้องขอครั้งถัดไปได้อย่างไร

คุกกี้ใน JSP พร้อมตัวอย่าง

คุกกี้ JSP คืออะไร?

คุกกี้ JSP คือไฟล์ข้อความขนาดเล็กที่เว็บเซิร์ฟเวอร์แบบ JSP ขอให้เบราว์เซอร์ของลูกค้าจัดเก็บไว้ในอุปกรณ์ของผู้ใช้ เนื่องจาก HTTP เป็นโปรโตคอลแบบไร้สถานะ คุกกี้ JSP จึงเป็นวิธีที่ง่ายและได้มาตรฐานในการจดจำข้อมูลระหว่างการร้องขอ เช่น สถานะการเข้าสู่ระบบ การเลือกภาษา ธีม หรือร้านค้าping รหัสระบุตะกร้าสินค้า

  • คุกกี้ JSP คือไฟล์ข้อความธรรมดาที่เบราว์เซอร์จัดเก็บไว้ในเครื่องไคลเอ็นต์
  • พวกเขาคุ้นเคยกับ tracข้อมูล k สำหรับการจัดการเซสชัน การปรับแต่งส่วนบุคคล และการวิเคราะห์
  • JSP รองรับคุกกี้ HTTP ผ่านเทคโนโลยี Servlet และคลาส javax.servlet.http.Cookie ที่อยู่เบื้องหลัง
  • คุกกี้ JSP คือ transmitted ภายในส่วนหัวของคำขอและคำตอบ HTTP ในทุกคำขอที่ตรงกัน
  • เมื่อตั้งค่าเบราว์เซอร์ให้ยอมรับคุกกี้ เบราว์เซอร์จะจัดเก็บคุกกี้ไว้ในดิสก์จนกว่าจะถึงวันหมดอายุที่ตั้งไว้โดย setMaxAge

เหตุใดจึงต้องใช้คุกกี้ JSP?

นักพัฒนา JSP อาศัยคุกกี้เนื่องจากคำขอ HTTP แต่ละรายการเป็นอิสระต่อกัน หากไม่มีคุกกี้ใน JSP เซิร์ฟเวอร์จะไม่ทราบว่าคำขอสองรายการนั้นมาจากผู้เยี่ยมชมคนเดียวกัน คุกกี้ใน JSP ช่วยแก้ปัญหานี้ได้โดยใช้สถานะฝั่งเซิร์ฟเวอร์น้อยที่สุด

  • เซสชั่น tracกษัตริย์: คุกกี้ JSESSIONID เชื่อมโยงการเข้าชมหน้าเว็บหลายหน้าเข้ากับเซสชันเชิงตรรกะเดียว
  • ส่วนบุคคล: คุกกี้ JSP สามารถจัดเก็บการตั้งค่าภาษา ธีม หรือรูปแบบการแสดงผลได้
  • ตัวช่วยในการยืนยันตัวตน: โดยปกติแล้ว โทเค็น "จดจำฉัน" และสถานะการเข้าสู่ระบบจะถูกจัดเก็บไว้ในคุกกี้ที่มีการเปิดใช้งานแฟล็ก HttpOnly และ Secure
  • Analytics: คุกกี้ใน JSP จะบันทึกข้อมูลผู้เข้าชมซ้ำ แหล่งที่มา และเส้นทางการแปลงผู้เข้าชมเป็นลูกค้า

ประเภทของคุกกี้ JSP

  1. คุกกี้ถาวร: คุกกี้ JSP แบบถาวรจะถูกเก็บไว้ในอุปกรณ์ตามระยะเวลาที่กำหนดไว้ด้วย setMaxAge ซึ่งจะช่วยให้แอปพลิเคชันจดจำการตั้งค่าและรายละเอียดการเข้าสู่ระบบได้แม้ว่าจะรีสตาร์ทเบราว์เซอร์แล้วก็ตาม
  2. คุกกี้ที่ไม่คงอยู่ถาวร: คุกกี้ JSP แบบไม่ถาวร หรือที่เรียกว่าคุกกี้เซสชัน จะเก็บไว้ในหน่วยความจำของเบราว์เซอร์เท่านั้น และจะถูกลบออกเมื่อผู้ใช้ปิดเบราว์เซอร์ โดยส่วนใหญ่จะใช้สำหรับเซสชันที่มีอายุสั้น tracกษัตริย์.

วิธีการคุกกี้ JSP

คลาส javax.servlet.http.Cookie มีเมธอดต่อไปนี้ที่ใช้บ่อยที่สุดเมื่อทำงานกับคุกกี้ JSP

  • public void setDomain(String domain)

    เมธอด `setCookie` ของ JSP นี้จะกำหนดโดเมนที่คุกกี้ของ JSP นั้นใช้บังคับ

  • สาธารณะ String getDomain()

    เมธอด getCookie ของ JSP นี้จะส่งคืนโดเมนที่ JSP Cookie นั้นใช้งานอยู่

  • public void setMaxAge(int expiry)

    ฟังก์ชันนี้ใช้กำหนดเวลาสูงสุดเป็นวินาทีก่อนที่คุกกี้ JSP จะหมดอายุ ค่าศูนย์จะลบคุกกี้ และค่าลบจะทำให้คุกกี้นั้นกลายเป็นคุกกี้ชั่วคราว

  • สาธารณะ int getMaxAge()

    ฟังก์ชันนี้จะแสดงอายุสูงสุดของคุกกี้ JSP ในหน่วยวินาที

  • สาธารณะ String getName()

    ฟังก์ชันนี้จะส่งคืนชื่อของคุกกี้ JSP

  • public void setValue(String value)

    กำหนดค่าที่เชื่อมโยงกับคุกกี้ JSP

  • สาธารณะ String getValue()

    ส่งคืนค่าที่เกี่ยวข้องกับคุกกี้ JSP

  • public void setPath(String path)

    วิธีการตั้งค่าคุกกี้ใน JSP นี้จะตั้งค่าคุกกี้ URL เส้นทางที่คุกกี้ใช้บังคับ

  • สาธารณะ String getPath()

    มันส่งคืน URL เส้นทางที่คุกกี้ JSP มีผลบังคับใช้

  • public void setSecure(boolean flag)

    ฟังก์ชันนี้จะทำเครื่องหมาย JSP Cookie เพื่อให้ส่งผ่านการเชื่อมต่อ HTTPS ที่เข้ารหัสเท่านั้น

  • public void setComment(String cmt)

    เนื้อหานี้อธิบายถึงวัตถุประสงค์ของ JSP Cookie

  • สาธารณะ String getComment()

    ฟังก์ชันนี้จะส่งคืนความคิดเห็นที่อธิบายเกี่ยวกับ JSP Cookie

วิธีจัดการคุกกี้ JSP

การทำงานกับคุกกี้ JSP ประกอบด้วยสามขั้นตอนที่ทำซ้ำได้ โดยใช้รูปแบบเดียวกันสำหรับสถานะการเข้าสู่ระบบ การเปลี่ยนธีม และร้านค้าping เกวียน

  1. สร้างอ็อบเจ็กต์ JSP Cookie โดยใช้ตัวสร้าง Cookie
  2. กำหนดค่าคุณสมบัติของคุกกี้ โดยเฉพาะอายุสูงสุด เส้นทาง และแฟล็กความปลอดภัย
  3. ส่งคุกกี้ไปยังเบราว์เซอร์ผ่านส่วนหัวการตอบสนอง HTTP โดยใช้ response.addCookie

วิธีการสร้างคุกกี้ JSP

มีการสร้าง JSP Cookie ใหม่โดยการเรียกใช้ javax.servlet.http.Cookie ด้วยชื่อและค่า จากนั้น Cookie จะถูกแนบไปกับอ็อบเจ็กต์ response เพื่อให้เบราว์เซอร์จัดเก็บไว้

วิธีอ่านคุกกี้ JSP

ในการร้องขอครั้งต่อๆ ไป เบราว์เซอร์จะส่ง JSP Cookies ที่ตรงกันกลับไปยังเซิร์ฟเวอร์ หน้าเว็บจะอ่าน Cookies เหล่านั้นโดยการเรียกใช้ request.getCookies ซึ่งจะส่งคืนอาร์เรย์ของอ็อบเจ็กต์ Cookie จากนั้นแอปพลิเคชันจะวนซ้ำในอาร์เรย์ ค้นหา Cookie แต่ละตัวตามชื่อ และใช้ค่าของ Cookie นั้น

วิธีการลบคุกกี้ JSP

ในการลบคุกกี้ JSP เซิร์ฟเวอร์จะสร้างคุกกี้ใหม่ที่มีชื่อเดียวกัน ตั้งค่าเป็นสตริงว่าง เรียกใช้เมธอด setMaxAge ด้วยค่าศูนย์ และเพิ่มคุกกี้ใหม่นั้นลงในคำตอบ จากนั้นเบราว์เซอร์จะลบคุกกี้ที่จัดเก็บไว้ในคำตอบครั้งถัดไป

ตัวอย่างการใช้งานคุกกี้ใน JSP

ในตัวอย่าง JSP Cookies นี้ แอปพลิเคชันจะสร้างคุกกี้สองตัวสำหรับชื่อผู้ใช้และอีเมล เก็บรักษาไว้เป็นเวลาสิบชั่วโมง จากนั้นจึงอ่านค่ากลับมาในหน้าเว็บที่สองชื่อ action_cookie_main.jsp

Action_cookie.jsp

<%-- Action_cookie.jsp: input form for JSP Cookies demo --%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie</title>
</head>
<body>
<form action="action_cookie_main.jsp" method="GET">
Username: <input type="text" name="username">
<br />
Email: <input type="text" name="email" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Action_cookie_main.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%

   Cookie username = new Cookie("username",
 			  request.getParameter("username"));
   Cookie email = new Cookie("email",
			  request.getParameter("email"));


   username.setMaxAge(60*60*10);
   email.setMaxAge(60*60*10);

   // Add both the JSP Cookies in the response header.
   response.addCookie( username );
   response.addCookie( email );
%>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Cookie JSP</title>
</head>
<body>

<b>Username:</b>
   <%= request.getParameter("username")%>
<b>Email:</b>
   <%= request.getParameter("email")%>

</body>
</html>

คำอธิบายของ Code

Action_cookie.jsp

Code บรรทัดที่ 10 ถึง 15: หน้านี้ประกาศแบบฟอร์มที่จะส่งไปยังไฟล์ action_cookie_main.jsp โดยมีช่องป้อนข้อมูลสองช่อง ได้แก่ ชื่อผู้ใช้และอีเมล เพื่อรวบรวมข้อมูลจากผู้ใช้ พร้อมด้วยปุ่มส่งข้อมูล

Action_cookie_main.jsp

Code บรรทัดที่ 6 ถึง 9: มีการสร้างอ็อบเจ็กต์ Cookie สองตัว ได้แก่ username และ email โดยใช้ request.getParameter เพื่ออ่านค่าที่ส่งมาจากฟอร์ม

Code บรรทัดที่ 12 ถึง 13: เมธอด setMaxAge จะถูกเรียกใช้ด้วยค่า 60 คูณ 60 คูณ 10 ซึ่งจะกำหนดอายุการใช้งานของ JSP Cookie แต่ละตัวเป็นสิบชั่วโมง

Code บรรทัดที่ 16 ถึง 17: คุกกี้สองตัวจะถูกแนบไปกับคำตอบโดยใช้ response.addCookie จากนั้นเบราว์เซอร์จะส่งคุกกี้เหล่านั้นกลับไปในการร้องขอครั้งถัดไป และเซิร์ฟเวอร์จะอ่านคุกกี้เหล่านั้นโดยใช้ request.getCookies หรือ request.getParameter สำหรับการร้องขอปัจจุบัน

เอาท์พุต

เมื่อคุณรันโค้ดข้างต้น คุณจะได้รับผลลัพธ์ดังต่อไปนี้

วิธีการคุกกี้ JSP

วิธีการคุกกี้ JSP

เมื่อไฟล์ action_cookie.jsp ทำงาน เบราว์เซอร์จะแสดงช่องกรอกข้อมูลสองช่อง ได้แก่ ชื่อผู้ใช้และอีเมล หลังจากที่ผู้ใช้กรอกข้อมูลและคลิกปุ่มส่ง ไฟล์ action_cookie_main.jsp จะสร้างคุกกี้ JSP ที่ตรงกันบนเซิร์ฟเวอร์ จัดเก็บคุกกี้เหล่านั้นไว้ในฝั่งไคลเอนต์ และแสดงค่าเพื่อยืนยันว่าได้สร้างคุกกี้สำเร็จแล้ว

แนวทางปฏิบัติที่ดีที่สุดสำหรับคุกกี้ JSP

แอปพลิเคชันเว็บสมัยใหม่ควรปฏิบัติต่อ JSP Cookies ในฐานะข้อมูลที่มีความอ่อนไหวต่อความปลอดภัย แนวทางปฏิบัติต่อไปนี้สอดคล้องกับการใช้งาน Servlet 4.x และ Servlet 5.x ในปัจจุบัน

  • ใช้ HttpOnly: ตั้งค่าคุกกี้การตรวจสอบสิทธิ์เป็น HttpOnly เพื่อป้องกันไม่ให้สคริปต์ฝั่งไคลเอ็นต์อ่านได้
  • ใช้ระบบรักษาความปลอดภัย: ส่งคุกกี้ผ่าน HTTP เท่านั้นโดยเรียกใช้ setSecure(true)
  • ใช้ SameSite: กำหนดค่าแอตทริบิวต์ SameSite (Lax หรือ Strict) ผ่านส่วนหัวของคอนเทนเนอร์หรือส่วนหัวของการตอบกลับ เพื่อลดความเสี่ยงจากการปลอมแปลงคำขอข้ามเว็บไซต์
  • รักษามูลค่าให้มีขนาดเล็ก: เก็บตัวระบุไว้ในคุกกี้และเก็บข้อมูลไว้ในพื้นที่จัดเก็บข้อมูลฝั่งเซิร์ฟเวอร์
  • กำหนดวันหมดอายุอย่างชัดเจน: ใช้คำสั่ง setMaxAge เพื่อให้การทำงานเป็นไปอย่างสม่ำเสมอในทุกเบราว์เซอร์

คำถามที่พบบ่อย

คุกกี้ JSP คือไฟล์ข้อความขนาดเล็กที่เก็บข้อมูลในเบราว์เซอร์ของลูกค้า หน้าเว็บ JSP ใช้คุกกี้เหล่านี้สำหรับการจัดการเซสชัน tracKing สามารถจดจำการตั้งค่าของผู้ใช้ รองรับสถานะการเข้าสู่ระบบ และขับเคลื่อนการวิเคราะห์ข้อมูลจากคำขอ HTTP หลายรายการไปยังเว็บแอปพลิเคชันเดียวกันได้

ตั้งค่าคุกกี้เป็น HttpOnly เพื่อป้องกันไม่ให้สคริปต์อ่านได้ เรียกใช้ setSecure(true) เพื่อให้คุกกี้ส่งผ่าน HTTPS เท่านั้น และกำหนดค่าแอตทริบิวต์ SameSite เป็น Lax หรือ Strict เพื่อลดความเสี่ยงจากการโจมตี Cross-Site Request Forgery ในเบราว์เซอร์สมัยใหม่

สร้างคุกกี้ใหม่ที่มีชื่อและพาธเดียวกัน ตั้งค่าเป็นสตริงว่าง เรียกใช้ setMaxAge(0) และเพิ่มลงในคำตอบด้วย response.addCookie จากนั้นเบราว์เซอร์จะลบคุกกี้ที่จัดเก็บไว้ซึ่งตรงกันทันที

คุกกี้ JSP แบบถาวรมีอายุสูงสุดเป็นค่าบวก และจะถูกเก็บไว้ในดิสก์จนกว่าจะหมดอายุ ในขณะที่คุกกี้แบบชั่วคราวมีอายุสูงสุดเป็นค่าลบ จะถูกเก็บไว้ในหน่วยความจำของเบราว์เซอร์เท่านั้น และจะถูกลบออกเมื่อปิดหน้าต่างเบราว์เซอร์

ระบบวิเคราะห์ข้อมูลที่ขับเคลื่อนด้วย AI สามารถประเมินปริมาณการใช้งานคุกกี้แบบเรียลไทม์ ตรวจจับตัวระบุเซสชันที่ถูกขโมย ตรวจจับการเปลี่ยนแปลงตำแหน่งทางภูมิศาสตร์ที่ผิดปกติ และกระตุ้นการตรวจสอบสิทธิ์แบบหลายขั้นตอน นอกจากนี้ โมเดลการเรียนรู้ของเครื่องยังช่วยปรับแต่งนโยบาย SameSite, HttpOnly และ Secure ตามรูปแบบการโจมตีที่สังเกตได้

ใช่แล้ว ผู้ช่วย AI สามารถสแกนโค้ด JSP และ Servlet รุ่นเก่า เขียนโค้ดใหม่สำหรับการเรียกใช้ javax.servlet.http.Cookie เป็น jakarta.servlet.http.Cookie ใน Servlet 5.x เพิ่มแฟล็ก SameSite และ HttpOnly และแนะนำวิธีการจัดเก็บตัวระบุเซสชันที่ปลอดภัยยิ่งขึ้นโดยไม่ทำให้ตรรกะของแอปพลิเคชันที่มีอยู่เสียหาย

สรุปโพสต์นี้ด้วย: