วันอังคารที่ 30 กรกฎาคม พ.ศ. 2567

Local Storage หรือ Cookie สำหรับ Session Token เช่น JWT

"Local Storage หรือ Cookie สำหรับ Session Token เช่น JWT"


ทีนี้เรามาดูกันต่อ ว่าเราควรเก็บไว้ที่ไหนดี
(ส่วนใหญ่เน้นไปที่การโจมตีแบบ XSS การโจมตีแบบอื่นลองดู Ref เพิ่มเติมได้)
.
มีการถกเถียงกันอย่างกว้างขวางว่า ควรเก็บ Token ใน Local Storage หรือ Cookie แบบ HttpOnly ดี แต่จากศึกษาพบว่าการเลือกเก็บ Token ในแต่ละแบบมีข้อดีและข้อเสียของมันอยู่ และไม่ได้แปลว่าการเก็บใน Local Storage จะแย่เสมอไป (Ref #1)
.
🔸 Token คืออะไร
.
เราต้องเก็บข้อมูลบางอย่างเพื่อให้ User ไม่ต้องกรอกข้อมูล Username/Password ตลอดเวลาทุกครั้งที่มี Request ไปหา Server, และถ้าคุณมี Token คุณก็สามารถเข้าถึงข้อมูลได้ เปรียบเหมือนเราถือเช็คเงินสดที่ออกโดยธนาคาร ใครก็ตามที่มีเช็คก็สามารถเบิกเงินได้ ธนาคารไม่ต้องคอยมาตรวจสอบว่าคุณคือเจ้าของเช็คเงินสดอีกมั้ย (แต่ในบริบทของ Token จะแตกต่างกันไปบ้าง) (Ref #1 จากคุณ Pedro M. M.)
.
🔸 เก็บ Token ที่ Local Storage
.
- สามารถเข้าถึงได้จาก JavaScript, Local Storage สามารถเข้าถึงได้ผ่าน JavaScript โดยตรงเลย
- ความง่ายในการใช้งาน: Local Storage สามารถเข้าถึงได้ง่ายผ่าน JavaScript ทำให้การจัดการกับ Token ในฝั่ง Client เป็นไปอย่างสะดวกและรวดเร็ว
- ความยืดหยุ่น: ในกรณีของ Single Page Applications (SPAs) Local Storage มอบความยืดหยุ่นในการจัดการกับ Session Token และช่วยให้ประสบการณ์การใช้งานเป็นไปอย่างราบรื่น
.
🔸 เก็บ Token ที่ HttpOnly Cookies (Secure และ SameSite Cookie)
.
- ป้องกันการเข้าถึงจาก JavaScript: HttpOnly Cookies ไม่สามารถเข้าถึงได้จาก JavaScript แต่ทุกครั้งที่มีการส่ง Request ไป Server เจ้าตัวของ Cookies นั้นก็จะถูกแนบไปด้วยทุกครั้ง ดังนั้น Hacker ที่มีประสบการณ์และมีเวลามากพอ จะสามารถข้าม HttpOnly ไปได้ โดยเทคนิคอื่นๆ (Ref 1: พี่คริสอธิบาย, Ref 3: "Why HttpOnly Won't Protect You" โดย PDP, Ref 4: Securing cookies with httponly and secure flags)
- การใช้งานกับ Server-Side Rendering (SSR): การเก็บ Token ใน HttpOnly Cookies ทำให้สามารถเข้าถึง Token ได้ในฝั่ง Server ซึ่งมีประโยชน์ในการทำ SSR
.
🔸 ความแตกต่างของการใช้งาน Token
.
- หาก Token อยู่ใน LocalStorage ผู้โจมตีสามารถขโมยToken เพื่อใช้งานในภายหลังได้ และถ้าเป็น Cookie ผู้โจมตีต้องยิง Request บน Browser ของเหยื่อ ซึ่งอาจจะทำได้ลำบากกว่า
.
🔸 การโจมตีแบบ XSS (Cross-Site Scripting)
.
การโจมตีแบบ XSS (Ref 2) เป็นการโจมตีทางเว็บที่แฮกเกอร์แทรกโค้ดที่เป็นอันตรายลงในหน้าเว็บหรือแอปพลิเคชันเว็บ ซึ่งจะทำงานเมื่อผู้ใช้เปิดหน้าเว็บหรือแอปพลิเคชันนั้นๆ โค้ดที่เป็นอันตรายมักจะเป็นสคริปต์ JavaScript ที่สามารถขโมยข้อมูลสำคัญจากผู้ใช้หรือทำให้เกิดพฤติกรรมที่ไม่พึงประสงค์ได้
.
เช่น การโจมตีแบบ Stored XSS (Persistent XSS)
ผู้โจมตีแทรกโค้ดที่เป็นอันตรายลงในเว็บไซต์ เช่น ในฟอร์มการกรอกข้อมูลหรือในช่องแสดงความคิดเห็น
เมื่อผู้ใช้คนอื่นเข้าชมหน้าเว็บที่มีข้อมูลที่ถูกแทรก โค้ดที่เป็นอันตรายจะถูกเรียกใช้งาน โค้ดที่เป็นอันตรายนี้สามารถเข้าถึง localStorage และขโมยข้อมูลที่เก็บไว้ได้
.
🔸 การป้องกันการโจมตีแบบ XSS
.
- การตรวจสอบและทำความสะอาดข้อมูล: ตรวจสอบและทำความสะอาดข้อมูลที่ได้รับจากผู้ใช้ก่อนที่จะนำไปแสดงผล
- การใช้ Content Security Policy (CSP): กำหนดนโยบายความปลอดภัยในการโหลดสคริปต์และเนื้อหาอื่นๆ บนหน้าเว็บ
- การเข้ารหัสข้อมูลที่ส่งไปยังเซิร์ฟเวอร์: ใช้การเข้ารหัสข้อมูลในฟอร์มและการร้องขอ HTTP เพื่อป้องกันการแทรกสคริปต์ที่เป็นอันตราย
- การหลีกเลี่ยงการแสดงผลข้อมูลที่ไม่ได้รับการตรวจสอบ: หลีกเลี่ยงการแสดงผลข้อมูลจากผู้ใช้โดยตรงโดยไม่ผ่านการตรวจสอบและทำความสะอาด
.
🔸 ถึงแม้ไม่ได้ถูกโจมตีแบบ XSS ก็ขโมยข้อมูลจาก Local Storage, Cookie ได้เช่น Malware, Browser Extension พวกนี้ส่วนใหญ่จะมาจากฝั่ง User ไม่ใช่คนออกแบบระบบ
.
🔸 ความปลอดภัยในทางปฏิบัติ
.
- ทั้ง Local Storage และ HttpOnly Cookies มีความเสี่ยงในกรณีที่เกิดการโจมตีแบบ XSS หากผู้โจมตีสามารถ inject script ลงในเว็บไซต์ได้ เขาก็สามารถทำการโจมตีและเรียกใช้ API ในนามของผู้ใช้ได้เหมือนกัน ไม่ว่าจะเก็บ Token ไว้ที่ไหน
- ออกแบบ Access Token ให้มีอายุสั้น เพื่อลดผลกระทบหาก Token ถูกขโมย ใช้คู่กับ Refresh Token
- การป้องกัน XSS จึงเป็นสิ่งสำคัญที่สุด ไม่ว่าจะเลือกใช้วิธีการเก็บ Token แบบใด การทำความสะอาดข้อมูล (Data Sanitization) อย่าให้ script ใดๆ เข้าไปในระบบ และแสดงผลออกมาทำงานได้ และการตรวจสอบ Input อย่างเข้มงวดสามารถลดความเสี่ยงจากการโจมตีได้
.
🔸 สรุป
.
การเก็บ Session Token ใน Local Storage ไม่ได้แย่เสมอไป ขึ้นอยู่กับการออกแบบระบบและการป้องกันความปลอดภัยที่มีอยู่ การใช้ HttpOnly Cookies อาจเพิ่มความยากลำบากในการโจมตีจาก XSS แต่ไม่ใช่วิธีการที่ปลอดภัยอย่างสมบูรณ์
.
การออกแบบระบบให้ปลอดภัยนั้นไม่สามารถพึ่งพาวิธีการเก็บ Token เพียงอย่างเดียวได้ ต้องพิจารณาปัจจัยหลายอย่างรวมถึงการป้องกัน XSS การใช้ Secure Cookies และการใช้ Token ที่มีอายุการใช้งานสั้น การออกแบบระบบความปลอดภัยต้องคำนึงถึงทุกจุดที่อาจเป็นช่องโหว่ เพื่อให้แน่ใจว่าระบบมีความปลอดภัยที่สุดเท่าที่จะเป็นไปได้
.
ในท้ายที่สุด การป้องกัน XSS และการรักษาความปลอดภัยในทุกๆ ด้านของระบบเป็นสิ่งที่สำคัญที่สุดในการปกป้องข้อมูลของผู้ใช้
.
ผมเตรียมเอกสารไว้อ่านเพิ่มเติมสำหรับคนที่อยากเข้าใจริงๆ และช่วยประกอบการตัดสินใจ (อยู่ใน Comment)
- Ref 1: การพูดคุยถกเถียงใน Community
- Ref 2: การโจมตีแบบ Cross Site Scripting (XSS)
- Ref 3: การใช้ HttpOnly Cookie ใน Session Token (JWT)
- Ref 4: พฤติกรรมของ HttpOnly Cookie ช่วยป้องกันอะไร
- Ref 5: ความปลอดภัยใน Cookie ทำงานอย่างไร
- Ref 6: ความปลอดภัยใน Local Storage
- Ref 7: ตัวอย่างการทำ SPA ให้ปลอดภัย
- Ref 8: เทคนิคการโจมตีแบบอื่นๆ
.
ก่อนจะจากกัน ในการออกแบบ Security ที่ดีเราควรเข้าใจถึงสิ่งที่เราต้องการทำ
รวมถึงความเสี่ยงที่เรารับได้แค่ไหน และอย่าลืมว่ายิ่งสะดวกสบาย ความปลอดภัยอาจจะลดลงได้
.
เพื่อให้มันเกิดประโยชน์ต่อเพื่อนๆ
ถ้ารู้สึกว่าตรงไหนไม่ถูกต้อง หรืออยากเสริมตรงไหน สามารถคอมเม้นต์ได้่เลยนะ
อย่างบอกไปโพสที่แล้ว สิ่งที่ผมพอทำได้คือเป็นจุดเริ่มการพูดคุย
อยากสร้าง Communtiy แบบนี้ครับ 😊

วันจันทร์ที่ 10 มิถุนายน พ.ศ. 2567

4141training


Abstract Futuristic Wave Lines

IT4141

PORTFOLIO

Presented by:

SUPATTRA BOONTUA

IT4141

Gadget Mockup Frames Smartwatch Gray
Abstract Futuristic Wave Lines
Abstract Futuristic Wave Lines

USERหน้าแดง คืออะไร

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

ผ่านเครือข่ายอินเตอร์เน็ต เพื่อควาปลอดภัยขององค์กร

คู่มือ/คำแนะนำการใช้งาน LAN-เว็บหน้าแดง

Aesthetic Futuristic Wave Lines
Businessman Using Digital Phone
Person Coding on a Macbook Pro
Cloud Storage For Business Concept

บริการฝ่ายสารสนเทศ

Aesthetic Futuristic Wave Lines
Businessman Using Digital Phone
Person Coding on a Macbook Pro
Cloud Storage For Business Concept

บริการฝ่ายสารสนเทศ ที่เว็บนี้ค่ะ

https://fdnet.dhammakaya.network/

Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

ขอ ACCOUNT ใหม่

Abstract Futuristic Wave Lines
Laptop, Search, Technology, Zoom, Glasses Icon
Analytics, Monitor, Graph, Statistics, Report Icon

กรอกสมัครขอ user หน้าแดง ที่เว็บนี้ค่ะ

https://fdnet.dhammakaya.network/register.php


ลิ้งค์ภาพขั้นตอน

1. สมัคร: https://bit.ly/3y8Ns0N

2. ภาพรวม: https://bit.ly/3OCmCmT

Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

ต่ออายุ

ACCOUNT

Abstract Futuristic Wave Lines

ต่ออายุหน้าแดง กรอกข้อมูลได้ที่

https://fdnet.dhammakaya.network/register_renew.php



ลิ้งค์ภาพขั้นตอน

1. ต่ออายุ: https://bit.ly/3b7Kfp9

2. ภาพรวม: https://bit.ly/3OCmCmT


Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

เช็คสถานะ

ACCOUNT

Abstract Futuristic Wave Lines
Laptop, Search, Technology, Zoom, Glasses Icon

เช็คสถานะ Account หน้าแดง / รหัสผ่าน ด้วยตนเอง ที่

https://fdnet.dhammakaya.network/chkrenew.php

Analytics, Monitor, Graph, Statistics, Report Icon

ภาพขั้นตอนการเช็ค

Next Arrow
Abstract Futuristic Wave Lines
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

RESET รหัสผ่าน

Abstract Futuristic Wave Lines

ปัญหา: จำรหัสผ่านไม่ได้ หรือรหัสผ่านหมดอายุ


1. เข้าไปรีเซ็ตรหัสผ่านได้ที่ลิ้งค์นี้

https://fdnet.dhammakaya.network/new_domain/

(หากไม่เจออีเมล์ที่ระบบส่งไปให้ กรุณาเช็คที่โฟลเดอร์อีเมล์ขยะ หรือ spam mail)


2. ลิ้งค์ภาพตัวอย่างขั้นตอน

https://bit.ly/398wxBx


Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

เช็ค ACCOUNT ตรวจโค้วต้า

Abstract Futuristic Wave Lines

เช็ค Account ตรวจโค้วต้า ที่เว็บนี้ค่ะ

https://fdnet.dhammakaya.network/register.php


Laptop, Search, Technology, Zoom, Glasses Icon
Analytics, Monitor, Graph, Statistics, Report Icon

ภาพขั้นตอนการเช็ค

Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

หน้าแดงไม่ขึ้น

Abstract Futuristic Wave Lines
Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

รู้จัก SERVER ต่างๆ

1) news-server

2) ss100

3) pr-center

4) newpr

5) photoservice ( ต้อง Join Domain ก่อน )


Abstract Futuristic Wave Lines
Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

WIFI ในองค์กร

วิธีการใช้ WIFI


1) 100Y-Office

2) 100Y.Dhammakaya_dot1x

3) DKC Network

4) 100Yprinter

Abstract Futuristic Wave Lines
Abstract Futuristic Wave Lines
Next Arrow
Gradient Infographic
Network, Global, Worldwide, Globe Grid, Earth Grid Icon

WIFI ในองค์กร

wifi ในองค์แบ่งตามพื้นที่ อาคาร100 ปี


- 100y-dhammakaya-dot1x

- 100y-office

- 100y-printer (ใช้แชร์ปริ้นเตอร์ )



Abstract Futuristic Wave Lines
Abstract Futuristic Wave Lines

wifi ในองค์แบ่งตามพื้นที่ 2000 ไร่


- สำนักงานใหญ่ : DKC-network (HQ)

- บุญรักษา : Boonraksa

- สภาฯ : DKC Network (Spha)

- วิหารคด : DKC Network (VHK)

- ปราบมาร : Prabman-Zoom-24HR

- อุบาสิกา : DKC-network

- 58 ไร่ : DKC-network


Next Arrow
Mobile Phone Icon
Mail Envelope Icon
Global Ranking Icon
Map Location Icon
Blue Modern shape Transparent
Next Arrow

CONTACT US

02-831-1441, 082-782-7733, 082-782-7744

noc@dhammakaya.center

https://fdnet.dhammakaya.network

กองบริการสารสนเทศ อาคาร 100 ปีฯ ตึก 0 ชั้น 11 วัดพระธรรมกาย

New York City Under Blue Sky and White Clouds
Abstract Futuristic Wave Lines

IT4141

THANK

YOU

noc@dhammakaya.center