1. บทนำเกี่ยวกับฟังก์ชั่น is_numberic
โปรแกรม CMS ในประเทศบางโปรแกรมใช้ฟังก์ชัน IS_Numberic
bool is_numeric (ผสม $ var)
ส่งคืนจริงถ้า var เป็นตัวเลขและสตริงตัวเลขมิฉะนั้นจะส่งคืนเท็จ
2. ฟังก์ชั่นปลอดภัยหรือไม่?
จากนั้นลองมาดูตัวอย่างเพื่อแสดงให้เห็นว่าฟังก์ชั่นนี้ปลอดภัยหรือไม่
การคัดลอกรหัสมีดังนี้: $ s = is_numeric ($ _ get ['s'])? $ _ get ['s']: 0;
$ sql = "แทรกลงในค่าการทดสอบ (ประเภท) ($ s);";
mysql_query ($ sql);
โปรแกรมแฟรกเมนต์ข้างต้นกำหนดว่าพารามิเตอร์ S เป็นตัวเลขและส่งคืนตัวเลขหรือไม่หากไม่ได้ส่งคืน 0 แล้วนำไปสู่การสืบค้นฐานข้อมูล (ด้วยวิธีนี้คำสั่ง SQL ไม่สามารถสร้างได้)
เราแปลง '1 หรือ 1' เป็น hexadecimal 0x31206f722031 เป็นค่าของพารามิเตอร์ S
หลังจากโปรแกรมทำงานแล้วเราจะสอบถามฐานข้อมูลเพื่อดูดังที่แสดงในรูปด้านล่าง:
หากคุณตรวจสอบฟิลด์ของตารางนี้อีกครั้งและไม่กรองและนำคำสั่ง SQL อีกครั้งจะทำให้เกิดการฉีด 2 ครั้ง
3. สรุป
พยายามอย่าใช้ฟังก์ชั่นนี้ 1 หรือ 1 จะไม่ปรากฏ