HTTP Header แบบ Security ฉบับพกพา 4

Datafarm
2 min readJan 27, 2021

สวัสดีทุกท่านนะครับ กลับมาพบกับแอดวินคนเดิมอีกครั้งนะครับ

ในครั้งนี้ แอดวินจะมาอธิบายให้ฟังเกี่ยวกับ X-Frame-Options นะครับ

X-Frame-Options คือ ตัวที่จะใช้กำหนดว่าเว็บบราวเซอร์จะได้รับอนุญาตให้แสดงผลหน้าเว็บของเราผ่านทาง Frame จากเว็บไซต์อื่น ๆ ได้หรือไม่ โดย Frame ดังกล่าวจะประกอบไปด้วย frame tag, iframe tag, embed tag หรือ object tag ซึ่งหากไม่มีการตั้งค่า X-Frame-Options นี้จะช่วยให้ผู้ไม่ประสงค์ดีสามารถโจมตีด้วยวิธี Clickjacking ได้

แล้วการโจมตีแบบ Clickjacking คือยังไงกันนะ

Clickjacking คือ การโจมตีผ่าน iframe โดยที่ผู้ไม่ประสงค์ดีจะฝัง iframe tag ที่เว็บไซต์ของคุณ หรือฝังเว็บไซต์ของคุณในเว็บไซต์ของผู้ไม่ประสงต์ดี เพื่อขโมยข้อมูลสำคัญหรือหลอกให้ผู้ใช้งานกระทำการใด ๆ ที่ทำให้เกิดความเสียหายต่อตัวผู้ใช้งานเองหรือต่อระบบ

หลาย ๆ คนอาจจะนึกหรือจิตนาการไม่ออกว่า เอ… จะเป็นการโจมตีแบบไหนกันนะ เรามาดูกันครับ

- นายเค กำลังใช้งานเว็บไซต์ธนาคารแห่งหนึ่ง DF

- หลังจากใช้งานเว็บไซต์เสร็จ นายเคได้ท่องเว็บไซต์หมวดกลางคืนแล้วไปเจอเว็บที่แจก Macbook M1 ด้วยความที่ว่านายเคกำลังอยากได้โน๊ตบุ๊ครุ่นใหม่และเครื่อง ฯ เก่า ก็ใกล้จะพังแล้ว นายเคจึงได้ทำการกด Subscribe เพื่อจะเอา Macbook M1

- หลังจากที่นายเคได้กด Subscribe ไปแล้ว นายเคก็พบว่าไม่มีอะไรเกิดขึ้น นายเคก็เริ่มรู้สึกเอ๊ะใจแบบแปลก ๆ จึงได้เข้าไปที่เว็บไซต์ธนาคาร DF แล้วนายเคก็พบว่าเงินในบัญชีของเขาลดลงมาได้ยังไง ซึ่งก่อนที่เขาจะเลิกใช้งานเว็บไซต์ธนาคาร เงินในบัญชียังเหลืออยู่ 1000 เลยนะ

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

.

.

.

.

.

แอดวินเฉลยละ

มันคือการโจมตี Clickjacking ผ่านทางเว็บไซต์ที่แจก Macbook M1 นั่นหละครับ

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

หลายคนคงสงสัยกันสินะครับว่า เอ๊ะ ถ้าฝังเว็บไซต์แล้ว ทำไมถึงมองไม่เห็นกันละ

นั่นเป็นเพราะว่าผู้ไม่ประสงค์ดีได้ซ่อนเว็บไซต์ธนาคารดังกล่าวไว้นั่นเอง ด้วยวิธีการตั้งค่า opacity เป็น 0

เพื่อความเข้าใจที่มากขึ้น แอดวินจะลองไม่ซ่อนเว็บไซต์ธนาคาร

จากรูปจะเห็นได้ว่า เว็บไซต์ของธนาคารได้ถูกฝังลงที่เว็บไซต์ของผู้ไม่ประสงค์ดี และถ้าดูโดยละเอียด ปุ่ม Transfer กับ ปุ่ม Subscribe จะอยู่ตรงกันพอดี นั่นจึงเป็นเหตุที่ว่าทำไมนายเคกดปุ่ม Subscribe แล้วเงินของนายเคจึงได้หายไป ก็เพราะว่าแท้จริงแล้วนายเคได้กดปุ่มโอนเงินไปที่บัญชีของผู้ไม่ประสงค์ดี

วิธีการโจมตี Clickjacking จะไม่มีทางสำเร็จได้เลย ถ้านายเคไม่โลภมากและไม่เชื่อถือเว็บไซต์ที่ไม่น่าเชื่อถือ หรือนายเคควรมีความตระหนักรู้เกี่ยวกับภัยคุกคามต่าง ๆ ก็จะรู้เท่าทันกลโกงได้

อย่างไรก็ตาม วิธีการโจมตี Clickjacking สามารถป้องกันหรือบรรเทาได้ด้วย X-Frame-Options นั่นเอง

โดยเราสามารถตั้งค่า X-Frame-Options ได้ 3 วิธี คือ

ซึ่งวิธีการที่แอดวินแนะนำ คือตั้งค่าให้เป็น deny เพื่อให้เว็บไซต์ดังกล่าวไม่สามารถแสดงผลผ่านทาง Frame ใด ๆ ได้

หากเว็บไซต์ธนาคาร ฯ ได้ตั้งค่า แล้ว ผลลัพธ์ที่ได้จะเป็นดังนี้

เพียงเท่านี้นายเคผู้น่าสงสารก็จะไม่ถูกโจมตีด้วยวิธีการ Clickjacking ได้อีกต่อไป เพราะเว็บบราวเซอร์ไม่ได้รับอนุญาตให้แสดงผลหน้าเว็บของธนาคารผ่านทาง Frame ที่เว็บไซต์อื่น ๆ ได้

แอดวินขอตัวลาไปก่อน สวัสดีครับ

ข้อมูลเพิ่มเติมเผื่อใครอยากจะศึกษานะ

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

--

--

No responses yet