System Analyst MSSql

Database Design and Functionality

การออกแบบที่ดีจะช่วยให้ระบบมีความปลอดภัยและมีประสิทธิภาพ ต่อไปนี้คือตัวอย่างการออกแบบระบบฐานข้อมูลและฟังก์ชันการทำงาน

Database Design and Functionality for Login, Logout, Register, Forgot Password, and Reset Password Systems
Ake SuwaphanAke Suwaphan
27 February 2024

Database Design and Functionality

การออกแบบระบบฐานข้อมูลและฟังก์ชันการทำงานสำหรับระบบ Login, Logout, Register, Forgot Password และ Reset Password นั้นมีความสำคัญอย่างยิ่งต่อความปลอดภัยและประสิทธิภาพการทำงานของระบบ ต่อไปนี้คือตัวอย่างการออกแบบระบบฐานข้อมูลและฟังก์ชันการทำงาน

ออกแบบระบบฐานข้อมูลและฟังก์ชันการทำงาน

สร้างตาราง users ใช้เก็บข้อมูลผู้ใช้
                        
CREATE TABLE users (
    user_id INT PRIMARY KEY,
    username NVARCHAR(50) UNIQUE,
    password_hash NVARCHAR(255),
    email NVARCHAR(100) UNIQUE,
    reset_token NVARCHAR(100),
    reset_token_expiry DATETIME
);
                        
                        
สร้างเพิ่มข้อมูลผู้ใช้ใหม่ register (Insert)

INSERT INTO users (username, password_hash, email)
VALUES ('akesuwaphan', 'hashed_password', 'akesuwaphan@example.com');

ตรวจสอบข้อมูลผู้ใช้เมื่อทำการ login (Select with Condition)

SELECT * FROM users
WHERE username = 'akesuwaphan' AND password_hash = 'hashed_password';

สร้าง token สำหรับลืมรหัสผ่านและตั้งค่าเวลาหมดอายุ forgot password (Update with Token)

UPDATE users
SET reset_token = 'random_token', reset_token_expiry = DATEADD(HOUR, 1, GETDATE())
WHERE email = 'akesuwaphan@example.com';

ตรวจสอบ token และอัปเดตรหัสผ่าน reset password (Update with Token Validation)

UPDATE users
SET password_hash = 'new_hashed_password', reset_token = NULL, reset_token_expiry = NULL
WHERE reset_token = 'random_token' AND reset_token_expiry > GETDATE();

การ logout ไม่จำเป็นต้องทำการอัปเดตฐานข้อมูล

ต่อไปนี้คือตัวอย่างของการวิเคราะห์และข้อกำหนดของแต่ละฟังก์ชัน

  • 1.login
  • ข้อกำหนด:
    • ผู้ใช้ต้องกรอกชื่อผู้ใช้และรหัสผ่าน
    • ต้องมีการตรวจสอบว่าชื่อผู้ใช้และรหัสผ่านถูกต้อง
    • สร้าง session หรือ token เพื่อระบุตัวตนของผู้ใช้
  • การทำงาน:
    • รับข้อมูลการ login จากผู้ใช้ (อีเมล, รหัสผ่าน)
    • ตรวจสอบความถูกต้องของข้อมูล (อีเมล, รหัสผ่าน)
    • สร้าง session หรือ token ให้กับผู้ใช้
    • ส่ง response กลับไปยัง client
  • 2.logout
  • ข้อกำหนด:
    • ผู้ใช้ต้องเข้าสู่ระบบเพื่อทำการ logout
    • session หรือ token จะถูกยกเลิก
  • การทำงาน:
    • รับ request การ logout จากผู้ใช้
    • ลบ session หรือ token
    • ส่ง response กลับไปยัง client
  • 3.register
  • ข้อกำหนด:
    • ผู้ใช้ต้องกรอกข้อมูลที่จำเป็นเพื่อการลงทะเบียน (ชื่อ, รหัสผ่าน, อีเมล)
    • ต้องมีการตรวจสอบว่าชื่อผู้ใช้และอีเมลไม่ซ้ำกับข้อมูลที่มีอยู่แล้ว
  • การทำงาน:
    • รับข้อมูลการลงทะเบียนจากผู้ใช้
    • ตรวจสอบความถูกต้องของข้อมูล
    • สร้างบัญชีผู้ใช้ใหม่
    • ส่ง response กลับไปยัง client
  • 4.forgot password
  • ข้อกำหนด:
    • ผู้ใช้ต้องกรอกอีเมลที่เคยใช้ลงทะเบียน
    • ส่งอีเมลหรือข้อความรหัสลืมรหัสผ่านไปยังอีเมลที่ให้ไว้
  • การทำงาน:
    • รับข้อมูลลืมรหัสผ่านจากผู้ใช้
    • ตรวจสอบความถูกต้องของข้อมูล
    • สร้าง token สำหรับการรีเซ็ตรหัสผ่าน
    • ส่งอีเมลหรือข้อความรหัสลืมรหัสผ่านไปยังอีเมลของผู้ใช้
    • อัปเดตฐานข้อมูลด้วย token ที่สร้าง
  • 5.reset password
  • ข้อกำหนด:
    • ผู้ใช้ต้องกรอกรหัสผ่านใหม่
    • token สำหรับรีเซ็ตรหัสผ่านต้องถูกต้องและไม่หมดอายุ
  • การทำงาน:
    • รับข้อมูลการรีเซ็ตรหัสผ่านจากผู้ใช้
    • ตรวจสอบความถูกต้องของข้อมูล
    • ตรวจสอบความถูกต้องของ token และรหัสผ่านใหม่
    • อัปเดตรหัสผ่านใหม่ในฐานข้อมูล
    • ส่ง response กลับไปยัง client
  • การตรวจสอบข้อมูลและข้อบังคับของโปรแกรม
  • การตรวจสอบข้อมูล:
    • ในทุกๆ กระบวนการ การตรวจสอบข้อมูลที่ถูกต้องและความปลอดภัย เช่น การใช้งานการ hash รหัสผ่าน, การใช้ https สำหรับการส่งข้อมูลที่อยู่ระหว่าง client และ server เป็นต้น
  • ข้อบังคับของโปรแกรม:
    • การเขียนโค้ดที่ดีและปลอดภัยตามมาตรฐาน เช่น Microsoft Secure Coding Guidelines
    • ใช้ parameterized queries เพื่อป้องกันการโจมตี sql injection
    • ใช้การตรวจสอบสิทธิ์เพื่อให้แน่ใจว่าผู้ใช้มีสิทธิ์ในการทำแต่ละการกระทำ
    • บันทึก log เพื่อการติดตามและดำเนินการตอบสนองต่อเหตุการณ์ที่เกิดขึ้น
  • โปรแกรมนี้อาจต้องใช้ฐานข้อมูลเพื่อเก็บข้อมูลผู้ใช้, session, และ token ที่สร้างขึ้น. การตั้งค่าฐานข้อมูลและการเขียน query ต่างๆ ต้องป้องกันการโจมตีและรักษาความปลอดภัยด้วย