ให้disable
//header('X-Frame-Options: SAMEORIGIN');
และเพื่อความปลอดภัย ให้เปลี่ยน ออพชั่นเป็น
header('X-Frame-Options: ALLOW-FROM http://www.cymiz.com/');
เท่านี้เว็บ เราก็ดึง board ไปโชว์ในเว็บได้เเล้ว
อันนี้ใช้ได้ อนุญาตทั้งหมด
header('X-Frame-Options: ALLOW');
อันนี้ใช้ได้ ถ้าใส่ www จะไม่ได้ (แล้วแต่การตั้งค่าของเว็บ)
header('X-Frame-Options: ALLOW-FROM http://cymiz.com/');
จากบทความ (How to demonstrate ClickJacking with Jack) เราสามารถป้องกันการโจมตี “Click-jacking” ได้โดยโดยใช้ “X-Frame-Option” หรือ “Content-Security-Policy” โดยหลักการคือทาง “Server” เราจะต้อง “Set” ให้สามารถส่ง “Header” และค่าที่ต้องการไปยัง “Web Browser” และจากนั้น “Web Browser” จะประมวลผลเองว่าจะให้แสดงหรือไม่แสดงข้อมูลใน <iframe> ได้หรือไม่
โดยหลัก แต่ละค่ามีความหมายดังต่อไปนี้
DENY: เว็บไซต์ที่ใช้ <iframe> จะไม่ถูกแสดงข้อมูล
SAMEORIGIN: เว็บไซต์ทีมี “URL” หรือ “Domain” หรือ “IP” เดียวกันจะสามารถแสดงข้อมูลใน <iframe> ได้ถ้าต่างกันข้อมูลใน <iframe> จะไม่แสดงผล
ALLOW-FROM: เว็บไซต์ที่กำหนดไว้ จะสามารถแสดงข้อมูลใน <iframe> ได้
ALLOW-FROM
จากหน้า “Login” ของ “SAMEORIGIN” ให้เปลี่ยนเป็น “Source” ที่เราอนุญาต
<?php
//header( 'X-Frame-Options: SAMEORIGIN' );
header("X-Frame-Options: ALLOW-FROM http://172.16.112.133");
?>
DENY
จากหน้า “Login” ลองเปลี่ยน “Header” เป็น “DENY”
<?php
// Firefox 3.6.9+, Chrome 4.1+, IE 8+, Safari 4+, Opera 10.5+
//header( 'X-Frame-Options: SAMEORIGIN' );
//header("X-Frame-Options: ALLOW-FROM http://172.16.112.133");
header("X-Frame-Options: DENY");
?>
PHP – Content-Security-Policy
เราสามารถใช้ “Content-Security-Policy” ได้เช่นเดียวกับ “X-Frame-Options” ดังนี้ (ทดลองใช้ self ซึ่งผลลัพท์ คือ “SAMEORIGIN”
<?php
//header( 'X-Frame-Options: SAMEORIGIN' );
//header("X-Frame-Options: ALLOW-FROM http://172.16.112.133");
//header("X-Frame-Options: DENY");
//DENY
//header("Content-Security-Policy: frame-ancestors 'none'");
//SAMEORIGIN
header("Content-Security-Policy: frame-ancestors 'self'");
//ALLOW-FROM White-Lists
//header("Content-Security-Policy: frame-ancestors http://192.168.0.16 http://172.16.112.133");
?>
เราสามารถกำหนดเป็น “White-list” สำหรับ “ip” หรือ “domain” ที่อนุญาตให้ “iframe” ถึงหน้าหรือข้อมูลของเราไปใช้ได้ ดังนี้
<?php
//header( 'X-Frame-Options: SAMEORIGIN' );
//header("X-Frame-Options: ALLOW-FROM http://172.16.112.133");
//header("X-Frame-Options: DENY");
//DENY
//header("Content-Security-Policy: frame-ancestors 'none'");
//SAME ORIGIN
//header("Content-Security-Policy: frame-ancestors 'self'");
//ALLOW-FROM White-Lists
//Firefox 23+, Chrome 25+, Safari 7+, Opera 19+
header("Content-Security-Policy: frame-ancestors http://192.168.0.16 http://172.16.112.133");
?>
อ้างอิง
http://blog.itselectlab.com/?p=3711
vir9.com/ix เรียก vir9.com/forum ได้ แต่เรียก xxx.net/webboard ไม่ได้
ต้องแก้บรรทัด 104 ให้ Allow
ปัจจุบัน เว็บบราวเซอร์ต่าง ๆ ได้เพิ่มมาตรการป้องกันด้านความปลอดภัยเพิ่มมากขึ้น หนึ่งในมาตราการนั้นก็คือการรองรับ Security Headers ต่าง ๆ ที่ส่งมาจากเว็บเซิร์ฟเวอร์
หนึ่งใน Security Headers ที่ผู้ดูแลเว็บไซต์ไม่ควรละเลยก็คือ X-Frame-Options ซึ่งเป็น HTTP Response Header ที่ใช้กำหนดนโยบายว่าจะอนุญาตให้เว็บบราวเซอร์แสดงผลหน้าเว็บของเราภายใน frame จากเว็บไซต์อื่นได้หรือไม่ครับ
ซึ่งการไม่กำหนดนโยบายดังกล่าวแล้วอนุญาตให้เว็บไซต์ใด ๆ สามารถแสดงผลหน้าเว็บของเราใน frame ของเว็บไซต์อื่นได้ ก็เป็นการเปิดช่องให้ผู้ไม่ประสงค์ดีทำการโจมตีด้วยวิธี Clickjacking ได้
https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet
อัพเดทบอร์ดของac108 เป็น SMF 2.09แล้ว เว็บอื่นใช้ <iframe> ไม่ได้ทำไงดี
http://www.ac108.com/forum_thai/index.php?topic=1600.0