การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

JavaScript:
การส่งคำขอ HTTP ด้วยการตรวจสอบสิทธิ์พื้นฐาน

วิธีการ:

นี่คือตัวอย่างการใช้ Fetch API ของ JavaScript:

const url = 'https://some-protected-resource.com/data';
const username = 'YourUsername';
const password = 'YourPassword';

const headers = new Headers();
headers.set('Authorization', 'Basic ' + btoa(username + ':' + password));

fetch(url, { method: 'GET', headers: headers })
  .then(response => {
    if (response.ok) return response.json();
    throw new Error('Network response was not ok.');
  })
  .then(data => console.log(data))
  .catch(error => console.error('Fetch error: ', error));

ตัวอย่างผลลัพธ์ (พิมพ์ลงในคอนโซล):

{
  "protected": "data",
  "moreData": 12345
}

ศึกษาเพิ่มเติม

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

บริบททางประวัติศาสตร์:

  • การตรวจสอบพื้นฐานของ HTTP เป็นวิธีโบราณที่ได้รับการบรรยายครั้งแรกใน RFC 7617 จากปี 2015 ซึ่งได้มาแทนที่ RFC 2617 ที่เก่ากว่าอีกในปี 1999
  • วิธีนี้ถูกใช้กันอย่างแพร่หลายเนื่องจากความง่าย แต่จะไม่ปลอดภัยถ้าไม่ใช้ HTTPS เนื่องจากการเข้ารหัส base64 สามารถถอดรหัสได้อย่างง่ายดาย

ทางเลือก:

  • OAuth: มาตรฐานที่มีความปลอดภัยและซับซ้อนมากขึ้นสำหรับการมอบหมายการเข้าถึง ใช้ในกรณีที่คุณต้องการให้การเข้าถึงโดยไม่แชร์ข้อมูลรหัสผ่าน
  • API Keys: โทเค็นเดียวที่ง่ายต่อการจัดการกว่าโปรโตคอล OAuth ที่ซับซ้อน
  • Bearer Tokens: โดยเฉพาะ JWT (JSON Web Tokens) ซึ่งสามารถบรรจุข้อมูลได้มากกว่า

รายละเอียดในการนำไปใช้:

  • การเข้ารหัส Base64 ทำการแปลงสตริง username:password เป็นลำดับของอักขระที่สามารถส่งผ่านได้กว้างขวางมากขึ้น
  • ต้องแน่ใจเสมอว่าการเชื่อมต่อคือ HTTPS เพื่อป้องกันข้อมูลประจำตัวจากการถูกดักจับ
  • การพัฒนาสมัยใหม่ให้ความสำคัญกับโทเค็นและคุกกี้เซสชั่นสำหรับการตรวจสอบความถูกต้อง เนื่องจากมีความปลอดภัยและหลากหลายมากขึ้น

ดูเพิ่มเติม