|
|
|
3 แนวทางง่ายๆ เขียน PHP ให้ปลอดภัย แค่ใส่ใจกับอินพุต |
|
|
|
|
|
|
|
อย่าเชื่อ!! ว่าข้อมูลที่รับมาจากแหล่งที่เราควบคุมไม่ได้ ไม่ว่าจะเป็น $_GET,$_POST,$_REQUEST,$_COOKIE,$argv,file_get_contents(),Remote databases,Remote APIs และ ข้อมูลทุกอย่างที่มาจาก Client ว่าจะปลอดภัยครับ ฉะนั้นเราควรต้องกรอง และคอยตรวจสอบความถูกต้องของข้อมูลเสมอ ดังนี้
1.ควรกรองข้อมูลอักขระพิเศษต่างๆ จาก HTML ด้วย เช่น การใช้ฟังก์ชัน htmlentities()
ตัวอย่าง
Code (PHP)
<?php $input = '<p><script>alert("ยินดีด้วยคุณถูกรางวัลที่ 1!");</script></p>'; echo htmlentities($input, ENT_QUOTES, 'UTF-8');
ฟังก์ชัน htmlentities() จะช่วยให้เรากรองและแปลง HTML ให้กลายเป็น string ที่ปลอดภัยครับ หรือใครอยากลองเล่น Html Purifier Libray ตามไปได้ที่ http://htmlpurifier.org/
2.ถ้ารับข้อมูล input จาก user และมีการกรอกข้อมูล เช่น อีเมล์,โทรศัพท์,Urls ต่างๆ ก็ควรใช้ฟังก์ชัน filter_var() สำหรับกรองข้อมูลครับ ฟังก์ชันนี้จะช่วยกรองข้อมูล เช่น email,integers,floats,URLs และอื่นๆ
ตัวอย่าง เช่น
Code (PHP)
<?php $email = '[email protected]'; $emailSafe = filter_var($email, FILTER_SANITIZE_EMAIL);
การกรองข้อมูลอีเมล์ตามตัวอย่างนี้ จะเอาอักขระต่างๆออกให้ทั้งหมด ยกเว้น ตัวอักษร,ตัวเลข และ !#$%&’*+-/=?^_`{|}~@.[] นอกจากอีเมล์ ก็มี Sanitize filters อีกหลายตัว เช่น FILTER_SANITIZE_NUMBER_INT,FILTER_SANITIZE_URL,FILTER_SANITIZE_NUMBER_FLOAT เป็นต้น
3.การตรวจสอบความถูกต้องข้อมูลเราสามาถใช้ฟังก์ชัน filter_var() เช่นเดียวกัน โดยสามารถตรวจสอบได้หลายอย่างเช่น Booleans,emails,floats,integers,IP addresses ฯลฯ
ตัวอย่าง เช่น
Code (PHP)
<?php $input = '[email protected]'; $isEmail = filter_var($input, FILTER_VALIDATE_EMAIL); if ($isEmail !== false) echo "Success"; } else { echo "Fail"; }
นอกจากนี้ก็มี Validate filters อีกหลายตัวเช่น FILTER_VALIDATE_FLOAT,FILTER_VALIDATE_IP,FILTER_VALIDATE_REGEXP เป็นต้น
Tag : PHP
|
|
|
|
|
|
Date :
2015-05-05 09:59:53 |
By :
codingthailand |
View :
1614 |
Reply :
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แจ่ม
|
|
|
|
|
Date :
2015-05-06 11:16:52 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แนวทางนี้ผมได้พี่ Chaidhanan เคยสอนไว้ครับ ไม่เคยทำเลย แจ่มครับ
|
|
|
|
|
Date :
2015-05-06 13:41:42 |
By :
sarut14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2015-05-06 15:22:40 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|