ความปลอดภัย
สิ่งที่ระบบป้องกันให้อยู่แล้ว และสิ่งที่ผู้ดูแลต้องทำเอง
สิ่งที่ระบบทำให้อัตโนมัติ
| กลไก | ทำงานอย่างไร |
|---|---|
| เข้ารหัสรหัสผ่าน | เก็บด้วย bcrypt ซึ่งเป็นการเข้ารหัสทางเดียวและมี salt สุ่มต่อผู้ใช้แต่ละคน ผู้ดูแลระบบอ่านรหัสผ่านของผู้ใช้ไม่ได้ ทำได้แค่ตั้งใหม่ให้ |
| อัปเกรดรหัสผ่านเดิม | บัญชีที่ยังใช้การเข้ารหัสรูปแบบเก่าจะถูกแปลงเป็น bcrypt อัตโนมัติเมื่อผู้ใช้เข้าสู่ระบบครั้งถัดไป |
| จำกัดการเดารหัสผ่าน | ล้มเหลวเกิน 8 ครั้งภายใน 15 นาทีจาก IP เดียว จะถูกล็อกการเข้าสู่ระบบชั่วคราว |
| ป้องกัน CSRF | ทุกฟอร์มที่บันทึกข้อมูลมีโทเค็นกำกับ และโทเค็นจะถูกสร้างใหม่หลังตรวจสอบทุกครั้ง |
| ป้องกัน session fixation | ระบบสร้าง session ID ใหม่ทุกครั้งที่เข้าสู่ระบบสำเร็จ |
| ตรวจสิทธิ์ฝั่งเซิร์ฟเวอร์ | ทุกหน้าตรวจบทบาทและความเป็นเจ้าของข้อมูลซ้ำที่ฝั่งเซิร์ฟเวอร์ การซ่อนเมนูเป็นเพียงการจัดหน้าจอ ไม่ใช่มาตรการความปลอดภัย |
| สิทธิ์รายวิชา | ผู้สอนแก้ไขได้เฉพาะรายวิชาที่ตนเป็นผู้สอนหลักหรือผู้สอนร่วมเท่านั้น |
| ไฟล์ที่มีข้อมูลอ่อนไหว | สลิปการชำระเงิน ภาพจากการคุมสอบ และไฟล์งานที่ส่ง เข้าถึงผ่านหน้าที่ตรวจสิทธิ์แล้วเท่านั้น ไม่เปิดให้เข้าถึงไฟล์ตรง ๆ |
| กันเข้าถึงไฟล์ระบบ | ไฟล์ .sql, .md, .env, composer.json และไฟล์คล้ายกันถูกปิดกั้นด้วย .htaccess |
เมื่อผู้ใช้ถูกล็อกจากการเดารหัสผ่าน จะเห็นข้อความให้รอสักครู่แล้วลองใหม่ ระบบจะปลดล็อกให้เองเมื่อพ้นช่วงเวลา และล้างประวัติทันทีที่เข้าสู่ระบบสำเร็จ
สิ่งที่ผู้ดูแลต้องทำเอง
เปิดใช้ HTTPS
จำเป็นที่สุด — กล้อง (คุมสอบ/สแกนใบหน้า) และ Push Notification ทำงานเฉพาะบน HTTPS และรหัสผ่านที่ส่งผ่าน HTTP ธรรมดาถูกดักอ่านได้
ลบโฟลเดอร์ install/
หลังติดตั้งเสร็จให้ลบหรือเปลี่ยนชื่อทิ้งทันที แม้ระบบจะมีไฟล์ล็อกกันติดตั้งซ้ำอยู่แล้ว
เปลี่ยนรหัสผ่านเริ่มต้น
บัญชีที่สร้างใหม่ได้รหัส 123456 และบัญชีนักเรียนได้รหัสตามรูปแบบที่ตั้งไว้ — บังคับให้เปลี่ยนตั้งแต่เข้าครั้งแรก
สำรองข้อมูลสม่ำเสมอ
สำรองก่อนอัปเดตทุกครั้ง และตั้งรอบสำรองประจำ พร้อมเก็บไฟล์ไว้นอกเซิร์ฟเวอร์
ให้สิทธิ์เท่าที่จำเป็น
ผู้ดูแลระบบควรมีน้อยที่สุด คนอื่นใช้บทบาทผู้สอนก็เพียงพอ
อัปเดตระบบและ PHP
ติดตามเวอร์ชันใหม่ของ Aleanor และใช้ PHP รุ่นที่ยังได้รับการสนับสนุนด้านความปลอดภัย
ข้อมูลอ่อนไหวในระบบ
Aleanor เก็บข้อมูลส่วนบุคคลหลายประเภท ควรกำหนดนโยบายการเข้าถึงและระยะเวลาเก็บให้ชัด
| ข้อมูล | ความอ่อนไหว | ใครเข้าถึงได้ | ข้อควรระวัง |
|---|---|---|---|
| ข้อมูลใบหน้า | สูงมาก | ผู้ดูแลระบบ | เป็นข้อมูลชีวมิติ ต้องขอความยินยอมเป็นลายลักษณ์อักษร และลบเมื่อนักเรียนจบหรือย้ายออก |
| ภาพจากการคุมสอบ | สูงมาก | ผู้สอนของข้อสอบนั้น | แจ้งผู้สอบล่วงหน้าเสมอ และกำหนดว่าจะเก็บนานเท่าใด |
| สลิปการชำระเงิน | สูง | ผู้ดูแล / ผู้สอนของรายวิชา | มีเลขบัญชีและชื่อ — อย่าคัดลอกออกไปเก็บนอกระบบ |
| เลขบัตรประชาชน | สูง | ผู้ดูแลระบบ | เก็บเท่าที่จำเป็นต่อการดำเนินงานเท่านั้น |
| ข้อมูลผู้ปกครอง | สูง | ผู้ดูแลระบบ / ครูประจำชั้น | ใช้เพื่อการติดต่อเรื่องนักเรียนเท่านั้น |
| คะแนนและผลการเรียน | ปานกลาง | ครูประจำวิชา / ผู้ดูแล / เจ้าของข้อมูล | นักเรียนเห็นเฉพาะของตัวเอง |
| ไฟล์สำรองฐานข้อมูล | สูงมาก | ผู้ดูแลระบบ | มีข้อมูลทั้งระบบรวมรหัสผ่านที่เข้ารหัสไว้ — เก็บในที่ปลอดภัย ห้ามเผยแพร่ |
ไฟล์สำรองฐานข้อมูลคือสำเนาของทั้งระบบ — ห้ามวางไว้ในโฟลเดอร์ที่เข้าถึงได้จากเว็บ ห้ามส่งผ่านช่องทางที่ไม่เข้ารหัส และควรเก็บในที่ที่มีการควบคุมการเข้าถึง
ตรวจสอบย้อนหลัง
| ดูที่ไหน | เห็นอะไร |
|---|---|
| วิดเจ็ตกิจกรรมล่าสุด (หน้าแรกแดชบอร์ด) | การเข้าสู่ระบบ ออกจากระบบ และการเปลี่ยนแปลงสำคัญของทั้งระบบ พร้อม IP |
| ระบบนักเรียน → บันทึกกิจกรรม | การเปลี่ยนแปลงในระบบโรงเรียน เช่น การแก้คะแนน ปลดล็อกเกรด แก้ข้อมูลนักเรียน |
| ผู้ดูแลระบบ → รับชำระเงินออนไลน์ | เหตุการณ์ล่าสุดจาก Payment Gateway |

ทบทวนบันทึกกิจกรรมทุกสิ้นภาคเรียน โดยเฉพาะรายการปลดล็อกเกรดและแก้ไขคะแนนหลังล็อก — เป็นจุดที่ควรมีเหตุผลรองรับเสมอ
เมื่อสงสัยว่าบัญชีถูกเข้าถึงโดยไม่ได้รับอนุญาต
ระงับบัญชีทันที
ที่ ผู้ดูแลระบบ → ผู้ใช้งานระบบ กดระงับ เพื่อหยุดการเข้าถึงก่อน
ตรวจบันทึกกิจกรรม
ดูว่าบัญชีนั้นทำอะไรไปบ้าง จาก IP ใด และช่วงเวลาไหน
ตั้งรหัสผ่านใหม่
ตั้งรหัสใหม่ให้แล้วแจ้งเจ้าของบัญชีผ่านช่องทางที่ปลอดภัย
ตรวจข้อมูลที่อาจถูกแก้
โดยเฉพาะคะแนน เกรด และรายการชำระเงินในช่วงเวลาที่น่าสงสัย
เปิดใช้งานกลับ
เมื่อแน่ใจแล้วจึงเปิดบัญชีกลับ พร้อมแจ้งให้เจ้าของเปลี่ยนรหัสอีกครั้ง
รายการตรวจสอบก่อนเปิดใช้จริง
| รายการ | ตรวจว่า |
|---|---|
| HTTPS | เข้าเว็บด้วย https:// ได้และไม่มีคำเตือนใบรับรอง |
| โฟลเดอร์ install/ | ถูกลบหรือเปลี่ยนชื่อแล้ว |
| บัญชีผู้ดูแล | เปลี่ยนรหัสผ่านจากค่าเริ่มต้นแล้ว และมีจำนวนน้อยที่สุดเท่าที่จำเป็น |
| อีเมล | ทดสอบส่งสำเร็จ เพื่อให้ฟีเจอร์ลืมรหัสผ่านใช้ได้จริง |
| การสำรองข้อมูล | ทดลองสำรองและดาวน์โหลดไฟล์ได้จริงอย่างน้อยหนึ่งครั้ง |
| โมดูลที่ไม่ใช้ | ปิดไว้ทั้งหมด |
| สิทธิ์การเห็นเมนู | ตั้งให้เหมาะกับแต่ละบทบาทแล้ว |
| ข้อมูลใบหน้า | ถ้าเปิดใช้ ได้ขอความยินยอมและมีทางเลือกอื่นให้ผู้ไม่ยินยอมแล้ว |
| Payment Gateway | ถ้าเปิดใช้ ทดสอบด้วยคีย์ test ครบทุกกรณีแล้วจึงสลับเป็น live |