Files
2026-09-16 23:20:08 +07:00

6.6 KiB
Raw Permalink Blame History

07. Enterprise Developer & Security Whitepaper

Project: Thai Traditional Massage Queue Management System (TTMQMS Enterprise)
Standard: OWASP Top 10 2021 Mitigation & Clean Architecture PSR-12
Version: 1.0.0 Production


1. Developer Architecture & Clean Code Guidelines

ทีมพัฒนาจะต้องปฏิบัติตามมาตรฐานการเขียนโค้ดเพื่อรักษาความปลอดภัยและประสิทธิภาพสูงสุดของระบบ:

  • PSR-12 Coding Standard: โค้ด PHP ทั้งหมดใน src/ ต้องผ่านเกณฑ์ PSR-12 การตั้งชื่อตัวแปรใช้ CamelCase สำหรับ Method/Property และ PascalCase สำหรับ Class
  • Separation of Concerns:
    • Controllers (src/Controllers/): ทำหน้าที่ตรวจสอบ HTTP Request และส่งคืน JSON Response เท่านั้น ห้ามเขียนคำสั่ง SQL หรือ Business Logic ใน Controller เด็ดขาด
    • Services (src/Services/): เป็นศูนย์รวม Business Logic เช่น SmartQueueEngine, SoapNoteService
    • Repositories / Models (src/Models/): ทำหน้าที่ติดต่อฐานข้อมูลผ่าน PDO Prepared Statements เท่านั้น

2. OWASP Top 10 Security Checklist & Mitigation

2.1 A01:2021 Broken Access Control

  • Mitigation: ทุก API Endpoint (ยกเว้น /auth/login และ /queues/walkin) จะถูกตรวจสอบสิทธิ์ผ่าน JwtAuthMiddleware และ Role-Based Access Control (RBAC) หากหมอนวดพยายามเข้าถึง API ของแคชเชียร์ ระบบจะปฏิเสธด้วยสถานะ HTTP 403 Forbidden

2.2 A02:2021 Cryptographic Failures

  • Mitigation:
    • รหัสผ่านผู้ใช้ถูกเข้ารหัสด้วย Argon2id (Memory-hard algorithm ที่ทนทานต่อ GPU Brute-force)
    • ข้อมูลความลับและการสื่อสารระหว่างเซิร์ฟเวอร์ใช้ TLS 1.3 และ mTLS สำหรับ HIS Gateway
    • ข้อมูลส่วนบุคคลของผู้ป่วย (HN, เลขบัตร 13 หลัก) ได้รับการปกป้องตามนโยบาย PDPA

2.3 A03:2021 Injection (SQLi & XSS)

  • Mitigation:
    • การเรียกใช้ฐานข้อมูลทั้งหมดผ่าน PDO Prepared Statements with Bound Parameters ป้องกัน SQL Injection 100%
    • เอาต์พุตที่แสดงผลบนหน้าเว็บ PWA ถูกคัดกรองผ่าน Alpine.js x-text (Auto HTML-escaping) ป้องกัน Cross-Site Scripting (XSS)

2.4 A07:2021 Identification and Authentication Failures

  • Mitigation:
    • บังคับใช้ 2-Factor Authentication (TOTP RFC 6238) กับบัญชีเจ้าหน้าที่ทุกระดับ
    • กำหนดเวลาหมดอายุของ JWT Access Token ไว้เพียง 60 นาที
    • ล็อกบัญชีผู้ใช้ชั่วคราว 15 นาที หากกรอกรหัสผ่านผิดเกิน 5 ครั้ง (Brute-force Throttle)

3. Comprehensive Troubleshooting Guide (การแก้ไขปัญหาเบื้องต้น)

ปัญหาที่ 1: เครื่องอ่านบัตรประชาชน Smart Card ไม่ตอบสนองเมื่อกดปุ่มบนหน้าเว็บ

  • สาเหตุ: เบราว์เซอร์ไม่ได้รับอนุญาตให้ใช้ WebUSB API หรือยังไม่ได้ติดตั้งบริการ PCSC Daemon
  • วิธีแก้ไข:
    1. ตรวจสอบว่าเปิดใช้งานหน้าเว็บด้วย Google Chrome หรือ Microsoft Edge ผ่านโปรโตคอล HTTPS
    2. ในเบราว์เซอร์ ไปที่ chrome://settings/content/usbDevices แล้วตรวจสอบว่าอนุญาตให้ ttmqms.hospital.go.th เข้าถึงอุปกรณ์ USB แล้ว
    3. ตรวจสอบสถานะ PCSC Service ในเครื่องคอมพิวเตอร์: sudo systemctl status pcscd (Ubuntu) หรือใน Windows Services

ปัญหาที่ 2: AI Smart Queue ไม่ยอมจัดสรรหมอนวด (แจ้งเตือน ไม่มีหมอนวดว่าง)

  • สาเหตุ: หมอนวดในสาขาปฏิบัติงานครบชั่วโมงกำหนด (Max Daily Mins = 480) หรือเปลี่ยนสถานะเป็น Busy / Off_Duty
  • วิธีแก้ไข:
    1. ไปที่หน้า "จัดการห้องนวด & เตียง" เพื่อตรวจสอบว่ามีเตียงสถานะ Available หรือไม่
    2. ตรวจสอบตาราง Workload ในหน้าผู้บริหาร หากหมอนวดทำงานครบ 8 ชม. ให้พิจารณากดเพิ่มโควตาเวลาชั่วคราวในหน้า Settings หรือเปลี่ยนสถานะหมอนวดท่านอื่นให้เป็น Available

ปัญหาที่ 3: เครื่องพิมพ์ความร้อน ESC/POS ไม่ออกใบคิว

  • สาเหตุ: ขาดการเชื่อมต่อสาย USB หรือกระดาษความร้อนหมด/เปิดฝาค้างไว้
  • วิธีแก้ไข:
    1. ตรวจสอบไฟสถานะบนเครื่องพิมพ์ ESC/POS 80mm
    2. กดปุ่ม "เชื่อมต่อ USB Printer" ที่มุมขวาบนของหน้าเว็บอีกครั้ง และเลือกชื่ออุปกรณ์ Printer จาก Popup ของเบราว์เซอร์