ระบบรักษาความปลอดภัย
หน้านี้ได้อธิบาย "วิธีปฎิบัติที่ดีที่สุด" บางส่วนเกี่ยวกับความปลอดภัยของเว็บและรายละเอียดความปลอดภัยภายใน CodeIgniter
ความปลอดภัยของ URI
CodeIgniter จำกัดตัวอักษรบางอย่างซึ่งตัวอักษรนั้นถูกยอมรับใน URI เพื่อช่วยในการลดข้อมูลที่มุ่งร้าย สามารถผ่านไปยังแอพพลิเคชั่นของคุณได้ URIs สามารถใช้ได้ดังต่อไปนี้:
- ตัวอักษรและตัวเลข
- Tilde: ~
- Period: .
- Colon: :
- Underscore: _
- Dash: -
ข้อมูล GET, POST, และ COOKIE
ข้อมูลแบบ GET ไม่ถูกอนุญาตให้ใช้โดย CodeIgniter ตั้งแต่ระบบมีการทำ URI เป็นส่วนๆแทนที่จะใช้ URL query strings ตามปกติ (ยกเว้นถ้าคุณต้องใช้ก็สามารถเปิดการใช้งานได้ในไฟล์ config) โดยรวมอาเรย์ GET จะยังไม่ถูกตั้งค่าจากคลาส Input เมื่อระบบอยู่ในช่วงพึงถูกเปิดการใช้งาน
Register_globals
เมื่ออยู่ในช่วงที่ระบบถูกเปิดใช้งาน ค่าตัวแปรทั่วไปจะยังไม่ตั้งค่า, ยกเว้นว่าพบว่ามีในอาเรย์ $_POST และ $_COOKIE การไม่ตั้งค่าเป็นประจำมีผลเหมือนการตั้งค่า register_globals = off.
magic_quotes_runtime
คำสั่ง magic_quotes_runtime ถูกปิดเมื่อระบบอยู่ในช่วงเพิ่งเริ่มเปิดใช้งานดังนั้นคุณไม่ต้องนำเครื่องหมายสแลชออกเมื่อคุณต้องการรับข้อมูลจากฐานข้อมูล
วิธีปฎิบัติที่ดีที่สุด
ก่อนจะรับค่าใดๆมายังแอพพลิเคชั่นของคุณไม่ว่าจะเป็นข้อมูลแบบ POST จากยื่นแบบฟอร์ม (form submission) , ข้อมูล COOKIE , ข้อมูล URI , ข้อมูล XML-RPC หรือแม้กระทั้งข้อมูลจากอาเรย์ SERVER, คุณเน้นให้คุณปฎิบัติตาม 3 ขั้นตอนนี้
- กรองข้อมูลเหมือนกับมีจุดบกพร่อง
- ตรวจสอบข้อมูลให้ถูกต้องเพื่อให้แน่ใจว่ามันสอดคล้างกับรูปแบบที่ถูกต้อง , ความยาว , ขนาด , ฯลฯ (บางครั้งขั้นตอนนี้สามารถทำแทนขั้นตอนแรกได้)
- พาข้อมูลหลบภัย(escape the data) ก่อนที่จะส่งมอบไปยังฐานข้อมูล
CodeIgniter ได้จัดหาฟังก์ชันเพื่อช่วยเหลือในงานนี้แล้วดังต่อไปนี้
-
กรองข้อมูล XSS (Cross site Scripting)
CodeIgniter มาพร้อมกับตัวกรอง Cross Site Scripting ตัวกรองนี้ถูกใช้โดยทั่วไปเพื่อกำจัดข้อมูล Javascript ที่เป็นอันตรายจากข้อมูลคุณ, หรือ โค้ดอื่นๆที่จะขโมยข้อมูลใน cookies หรือทำอย่างอื่นที่มุ่งร้าย ตัวกรองข้อมูล XSS ถูกอธิบายไว้แล้ว ที่นี้
-
ตรวจสอบข้อมูล
CodeIgniter มีคลาส Form Validation Class เพื่อช่วยเหลือคุณในการตรวจสอบ , กรอง และเตรียมข้อมูล
-
พาข้อมูลทั้งหมดหลบภัยก่อนใส่เข้าไปในฐานข้อมูล
อย่าใส่ข้อมูลไปยังฐานข้อมูลของคุณโดยไม่ทำการหลบภัยมันก่อน โปรดดูหน้า queries สำหรับข้อมูลเพิ่มเติม