อันตรายจากคำสั่ง include(); ใน PHP ใครมีประสบการณ์มาแชได้ครับ

ตรง
$lock = “lockkey”;
$ver = “lockkey”;
เป็นการเขียนไว้ เฉยๆ เองครับ คือป้องกัน คนส่งค่าตัวแปลมาจาก url
ถึงอย่างไรเสีย เช่นหาก url มาเป็น index.php?lock=xxxx จริง

มันก็ถูก set ใหม่เป็น lockkey อยู่ดีครับ
แล้วจึง แสดงผลออกมา

หากเรียก inc/page1.php มันไม่มีตัวแปล lock ก็ else ไป จริงๆ
แต่ไม่แนะนำให้ใช้นะครับ เพราะว่า หากมีเรียกไฟล์ inc/page1.php แล้วส่งตัวแปล ?ver=aa&lock=bb ก็เรียกดูได้อยู่ดี

หากจะเขียนให้ถูกหลัก ไม่ให้เรียก inc/page1.php โดยตรง อาจเขียนเป็น

if($_SERVER[‘PHP_SELF’]!="/index.php"){
echo “คุณไม่สามารถเรียก page นี้ได้โดยตรง”;
exit();
}

แบบนี้ชัวกว่าแน่นอนครับ

ครับๆ จะลองดู

:slight_smile:

ผมคิดว่า htaccess เป็นวิธีที่ดีสุดครับ หรือไม่ก็ให้มีการ Loop check pararmeter get+post ว่ามี .php ,etc

register_global จะถูกยกเลิกใน php5.3.x และมีค่าเป็น off ไม่สามารถตั้งค่าให้เปิดได้ใน .htaccess คาดว่าจะ release ภายใน 3 เดือน ตอนนี้เป็น RC1 อยู่ เตรียมตัวรับงานใหญ่อีกระลอกได้แล้วครับ ลูกค้าต้อง update program สถานเดียวถึงจะใช้งาน 5.3.x ได้

^ Thanks

ดีเหมือนกันครับยกเลิกใน Php ไปเลย จริงๆมันไม่ควรทำแบบนั้นแต่แรกแล้ว

ใช้ php.ini ก็ไม่ได้แล้วรึเปล่าครับ มีลูกค้าเจ้านึง โค๊ดเอง ต้องแก้เยอะเหมือนกัน

register globals จะถูกปิดเป็นการถาวรน่ะครับ
วิธีแก้เบื้องต้น ใช้คำสั่ง extract เอาก็ได้
แต่เอาจริงๆ ไล่แก้ script ให้หมดดีกว่า

งั้นสงสัยต้องแยกกัน ตัวไหนทำมาไม่รองรับ ก็อยู่ SV เก่า

อื้อหือ เก่งๆ กันทั้งนั้น