PlusMagi's Blog By Pitt Phunsanit Frontend,Security,technology,Web HTML5 Security Attributes: การป้องกันภัยความปลอดภัยด้วย rel=”noopener noreferrer” บนลิงก์ภายนอก

HTML5 Security Attributes: การป้องกันภัยความปลอดภัยด้วย rel=”noopener noreferrer” บนลิงก์ภายนอก

ในโลกของการพัฒนาเว็บไซต์ที่เชื่อมโยงกันอย่างซับซ้อน การรักษาความปลอดภัยของข้อมูลผู้ใช้งานถือเป็นรากฐานที่สำคัญที่สุด ไม่ว่าจะเป็นการทำธุรกรรมออนไลน์ หรือเพียงแค่การคลิกลิงก์เพื่อไปยังแหล่งข้อมูลภายนอก ความเสี่ยงด้านความปลอดภัยก็มีอยู่เสมอ นักพัฒนามืออาชีพจึงต้องตระหนักถึงช่องโหว่เล็ก ๆ น้อย ๆ ที่อาจถูกนำไปใช้ประโยชน์ในการโจมตีได้ การป้องกันเชิงรุก (Proactive Defense) จึงเป็นสิ่งจำเป็นที่ทุกโค้ดเบสควรคำนึงถึง


เจาะลึกรายละเอียดและประเด็นสำคัญ

เมื่อเราสร้างลิงก์ที่เปิดไปยังหน้าต่างใหม่ (target=”_blank”) โดยไม่ได้มีการกำหนดแอตทริบิวต์ความปลอดภัยใด ๆ จะเกิดช่องโหว่ที่เรียกว่า “Reverse Tabnabbing” ได้ ช่องโหว่นี้เกิดขึ้นเนื่องจากหน้าเว็บต้นทางยังคงสามารถเข้าถึง Object ของหน้าต่าง (window object) ที่เปิดขึ้นมาใหม่ได้ ทำให้ผู้โจมตีสามารถรัน JavaScript เพื่อขโมยข้อมูลเซสชัน หรือเปลี่ยนเนื้อหาของหน้าเว็บที่ดูเหมือนจะน่าเชื่อถือให้กลายเป็นฟิชชิงได้อย่างง่ายดาย

การเพิ่มแอตทริบิวต์ rel="noopener noreferrer" เข้าไปในแท็ก <a> จึงเป็นมาตรการป้องกันที่จำเป็นอย่างยิ่ง โดย noopener จะตัดการเข้าถึง window object ของหน้าต่างใหม่จากหน้าเดิม และ noreferrer จะป้องกันไม่ให้เบราว์เซอร์ส่งข้อมูล Referer (แหล่งที่มาของการอ้างอิง) ไปยังเว็บไซต์ปลายทาง ซึ่งเป็นการจำกัดขอบเขตความเสียหายและเพิ่มระดับความปลอดภัยให้กับผู้ใช้งานอย่างมาก

<pre class="wp-block-syntaxhighlighter-code"><code><!-- ❌ โค้ดที่ไม่มีความปลอดภัย (Vulnerable) --><a href="https://example.com" target="_blank">ลิงก์ภายนอก</a>

<!-- ✅ โค้ดที่ปลอดภัยและแนะนำให้ใช้เสมอ --><a href="https://example.com" target="_blank" rel="noopener noreferrer">ลิงก์ภายนอกอย่างปลอดภัย</a></code></pre>

การนำไปประยุกต์ใช้ในชีวิตและการทำงานยุคใหม่

  • สำหรับนักพัฒนา (Developers): ควรตั้งค่าเป็นมาตรฐาน (Standard Practice) เสมอ เมื่อใดก็ตามที่ต้องใช้ target="_blank" ในทุกโปรเจกต์ ไม่ว่าจะเป็นการทดสอบหรือ Production เพื่อป้องกันช่องโหว่ระดับ Critical โดยอัตโนมัติ
  • สำหรับผู้ดูแลเนื้อหา (Content Managers): เมื่อมีการแชร์บทความหรือข้อมูลที่อ้างอิงแหล่งที่มาภายนอก ควรตรวจสอบและเพิ่มแอตทริบิวต์นี้ในระบบ CMS เพื่อให้มั่นใจว่าลิงก์เหล่านั้นมีความปลอดภัยต่อทั้งผู้ใช้และตัวเว็บไซต์เอง

การใส่ใจรายละเอียดเล็ก ๆ น้อย ๆ อย่างแอตทริบิวต์ rel ไม่ได้เป็นเพียงแค่การเขียนโค้ดที่ถูกต้องตามไวยากรณ์เท่านั้น แต่เป็นการแสดงความรับผิดชอบต่อผู้ใช้งาน (User Responsibility) และการยกระดับมาตรฐานความปลอดภัยของเว็บไซต์โดยรวม ทำให้เราสามารถสร้างประสบการณ์ดิจิทัลที่น่าเชื่อถือและทนทานต่อภัยคุกคามทางไซเบอร์ได้อย่างแท้จริง


อ่านเพิ่มเติม