วันศุกร์ที่ 16 มีนาคม พ.ศ. 2555

เรื่องความปลอดภัย header

 เรื่องความปลอดภัย กรณีอยากเช็คว่า user มีสิทธิ์ในการเข้าถึงข้อมูลนั้นรึเปล่า ถ้าไม่มีสิทธิ์ก็ให้ redirect ไปหน้าอื่น ดังตัวอย่าง

1. ไม่มี exit()
<?php
header("location:exit.php");
?>
ความลับ
Kong Prapan XXX

2. แบบมี exit()
<?php
header("location:exit.php");
exit();
?>
ความลับ
Kong Prapan XXX

ถ้าเราลองใช้ tool พวก HTTP sniffer หรือพวก Packet Sniffer ดูก็จะเห็นข้อมูล "ความลับ"
แต่ถ้าแบบที่สอง เราจะไม่เห้นข้อมูล "ความลับ"

Result แบบไม่มี exit: www.dizcode.com/live-demo/ss-1.png
Result แบบมี exit(): www.dizcode.com/live-demo/ss-2.png

จะเห็นได้ว่าแบบที่ 1 จะเห็นข้อความอยู่ ถึงแม้ว่าจะ set header ไปหน้าอื่นแล้วก็ตาม แต่แบบที่ 2 นั้นไม่เห็น

ซึ่งจริงๆแล้วอาจจะไม่ต้องใช้ exit(); เสมอไป อาจจะใช้ if{}else{} เป็นตัวเช็คแทนก็ได้