ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: อันตรายจาก include()  (อ่าน 792 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
siamman
บุคคลทั่วไป
« เมื่อ: 10 มิถุนายน 2008, 12:19:31 »

จาก hปปp://www.thaihosttalk.com/th1/index.php?topic=11280.0

เลยอยากถามเพื่อนในนี้ว่า วิธีใหนปลอดภัยที่สุดครับ จะได้เปลี่ยนวิธีการเขียนใหม่ซะที :Smiley

บันทึกการเข้า
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 10 มิถุนายน 2008, 12:44:21 »

เล่นแบบมุขควายเลยนะครับ

โค๊ด:
<?php

$_GET
['page'] = dirname(__FILE__)."/".$_GET['page'];
$_GET['page'] = preg_replace("#\.+/#""/"$_GET['page']);

include(
$_GET['page']);

?>

ยัด full local path ลงไป
กับจัดการพวก ../  ./ พวกนี้ทิ้ง

 Tongue
บันทึกการเข้า

ball6847
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 212
ออฟไลน์ ออฟไลน์

กระทู้: 4,174



ดูรายละเอียด
« ตอบ #2 เมื่อ: 10 มิถุนายน 2008, 13:20:33 »

มี 2 ประเด็น
- เลี่ยง url include
- $_POST $_GET $_COOKIE หรือ $_GLOBAL อย่าให้มีผลกับคำสั่งโดยตรง ต้องกรองหรือแต่งก่อนใช้งาน (โดยเฉพาะการนำไปใส่ใน database query)

ใช่รึปล่าว ไม่รู้เหมือนกัน  Grin Grin  Huh? Huh?
บันทึกการเข้า

EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
*

พลังน้ำใจ: 321
ออฟไลน์ ออฟไลน์

กระทู้: 12,518



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 10 มิถุนายน 2008, 13:23:53 »

ของผมใช้จริงจะแนวนี้มากกว่า

สมมุติรับค่า _GET path
จะใช้ค่านี้อ้างอิงแค่ชื่อโฟลเดอร์เท่านั้น (ใช้ฟังค์ชั่นตรวจเอาแค่ a-z ก็พอ)
แล้วอาจรับ _GET action เพื่อไปรันฟังค์ชั่นย่อยอีกที

จริงๆ ทั้งหมดจะอยู่หลัง modrewrite

เลยลักษณะ url จะออกเป็น

domain.com/path/action/string

แนวนี้ แนวคิดคล้ายกับพวก framework บางตัว  Tongue
บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์