Skip to main content
0

สารจากผู้เขียน

ปฏิเสธไม่ได้เลยว่าในยุคนี้ ความปลอดภัยของซอฟต์แวร์ถือเป็นเรื่องสำคัญมากในวงการอุตสาหกรรมซอฟต์แวร์ เนื่องจากถ้าหากซอฟต์แวร์ถูกเจาะระบบจากช่องโหว่ในซอฟต์แวร์เราก็จะทำให้ธุรกิจของเราเสียหายได้ วันนี้ผมจึงจะพามารู้จักการป้องกัน API ของเราแบบเบื้องต้นและง่ายที่สุดด้วย Basic Authentication กันครับ

Authentication คืออะไร

Authentication หรือเรียกสั้น ๆ ว่า Auth คือการยืนยันตัวตนว่า คนที่มาใช้งานซอฟต์แวร์ของเราเป็นใคร เขามีบัญชีในระบบของเราและสามารถเชื่อถือได้หรือไม่ว่าเป็นเขาจริง ๆ ที่มาใช้ ไม่ได้เป็นคนอื่นมาปลอมแปลง เราจึงมีการ Authentication ก่อนที่จะเข้าใช้งานได้ โดยในปัจจุบันเรามีวิธีการทำ Authentication หลายแบบมากมาย ยกตัวอย่างเช่น Basic Authentication, JWT หรือ OAuth

ที่มา : ภาพโดย merhanhaval22 จาก Pixabay

หลักการ Basic Authentication เบื้องต้น

Basic Authentication คือ การยืนยันตัวเบื้องต้นซึ่งง่ายที่สุด เพราะมีการเช็คแค่ Username และ Password เพียงชั้นเดียวก่อนที่จะเข้าเว็บไซต์ เวลาที่เราท่องไปในเว็บไซต์แต่ละหน้า เราก็จะต้องส่งการยืนยันตัวตนตลอด

แล้วเราจะส่ง Username และ Password ทางไหน? โดยปกติแล้วการ Authentication เราจะนิยมส่งผ่านส่วนที่เรียกว่า HTTP Header โดยมีการเข้ารหัสเป็น Base64 สำหรับ

เริ่มลงมือทำโปรเจ็ค

ในบทความนี้ผมจะขอยกตัวอย่างเป็นการเขียน API ด้วย Node.js ผ่าน Express โดยใครที่

ยังไม่เคยใช้งาน ให้ทำการติดตั้ง Node.js ลงในเครื่องก่อนตามลิ้งค์ได้เลยครับ

1. สร้างโฟลเดอร์เปล่าจากนั้นเข้า Terminal แล้วพิมพ์คำสั่ง

npm init --y

2. ทำการติดตั้ง Library ต่าง ๆ โดยครั้งนี้ผมจะใช้เป็น Express และ Express Basic Auth ครับ โดยพิมพ์คำสั่งตามนี้

npm install express express-basic-auth

3. เริ่มลงมือสร้างไฟล์ชื่อ server.js ในโฟลเดอร์ของเราแล้วเขียนโค้ดตามนี้เลยครับ

const express = require('express');
const basicAuth = require('express-basic-auth');

const app = express();

app.use(basicAuth({
    users: { 'admin' : 'password' } 
}));

app.get('/', (req, res) => {
    res.send("Hello World!");
})

app.listen(3000, () => {
    console.log('Server running on http://localhost:3000');
});
JavaScript

โดยการทำงานของโค้ดชุดนี้มีรายละเอียดดังนี้ครับ

  • บรรทัดที่ 1-2 : ทำการ Import Library ที่เราต้องการใช้งานเข้ามาในโปรแกรม ได้แก่ express และ express-basic-auth
  • บรรทัดที่ 4 : ทำการสร้างตัวแปรแทนตัวเซิฟเวอร์ของ Express
  • บรรทัดที่ 6-8 : app.use() คือการสร้าง Middleware ของ Basic Auth ซึ่งส่วนนี้เป็นตัวคอยยืนยันตัวตนก่อนที่จะเรียกใช้เซิฟเวอร์ทุกครั้ง โดยเราจะเพิ่มผู้ใช้ที่มีสิทธิ์เข้าถึงข้อมูลได้ มี Username เป็น “admin” และ Password เป็น “password”
  • บรรทัดที่ 10-12 : ทำการสร้าง Endpoint ขึ้นมา โดยมี Path เป็น / เรียกโดยใช้ Method Get และให้ทำการส่งข้อความ “Hello World!” กลับไป เมื่อสามารถเรียกใช้งานได้สำเร็จ
  • บรรทัดที่ 14-16 : กำหนด Port ที่เซิฟเวอร์ของเราจะรันเป็น Port 3000

4. รันเซิฟเวอร์ (รันไฟล์ server.js) ด้วยการพิมพ์คำสั่งรันใน Terminal

5. หมายความว่าเราจะต้องใส่การยืนยันตัวตนเข้าไปก่อนถึงจะมีสิทธิ์ในการเข้าถึงได้ ฉะนั้นเวลาเราจะส่ง API เราจะต้องกำหนดในส่วนของ Authorization ตามภาพนี้เลยครับ

6. ทดสอบยิง API อีกครั้งที่ Path เดิม จะพบว่ามันแสดงเป็น 200 OK เรียบร้อย หมายความว่าเรามีสิทธิ์ใช้เซิฟเวอร์ได้

สรุปส่งท้าย

การทำ Authentication เป็นสิ่งที่สำคัญอย่างมาก ซึ่งผมอยากให้ทุกคนลองศึกษา Authentication ประเภทต่าง ๆ เพื่อที่จะทำให้ซอฟต์แวร์ของเราปลอดภัยและไม่ตกเป็นเหยื่อของผู้ไม่ประสงค์ดี ผมหวังว่า บทความนี้จะพาให้ท่านรู้จักกับการยืนยันตัวตนและเป็นประโยชน์แก่ผู้อ่านไม่มากก็น้อย พบกันใหม่ในบทความหน้า สวัสดีครับ

อ้างอิง

Sawit Koseeyaumporn

Author Sawit Koseeyaumporn

Student @ CPE KMUTT

More posts by Sawit Koseeyaumporn

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

    ประเภทของคุกกี้มีความจำเป็นสำหรับการทำงานของเว็บไซต์ เพื่อให้คุณสามารถใช้ได้อย่างเป็นปกติ และเข้าชมเว็บไซต์ คุณไม่สามารถปิดการทำงานของคุกกี้นี้ในระบบเว็บไซต์ของเราได้
    รายละเอียดคุกกี้

  • คุกกี้สำหรับการติดตามทางการตลาด

    ประเภทของคุกกี้ที่มีความจำเป็นในการใช้งานเพื่อการวิเคราะห์ และ นำเสนอโปรโมชัน สินค้า รวมถึงหลักสูตรฟรี และ สิทธิพิเศษต่าง ๆ คุณสามารถเลือกปิดคุกกี้ประเภทนี้ได้โดยไม่ส่งผลต่อการทำงานหลัก เว้นแต่การนำเสนอโปรโมชันที่อาจไม่ตรงกับความต้องการ
    รายละเอียดคุกกี้

บันทึกการตั้งค่า