System Analyst
MSSql
Database Design and Functionality
การออกแบบที่ดีจะช่วยให้ระบบมีความปลอดภัยและมีประสิทธิภาพ ต่อไปนี้คือตัวอย่างการออกแบบระบบฐานข้อมูลและฟังก์ชันการทำงาน
Ake 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 ต่างๆ ต้องป้องกันการโจมตีและรักษาความปลอดภัยด้วย