ฉันมีสองคำถาม:
คำถามที่ 1: เหตุใด OAuth2 จึงจำเป็นต้องสั่งและเข้ารหัสพารามิเตอร์ (สำหรับ 2 ทาง)
สิ่งที่ต้องกังวลคือลายเซ็นที่ตรงกันทั้งสองด้านของข้อมูลที่กำหนด (สตริงแบบสอบถาม)
เราสามารถตรวจสอบลายเซ็นที่สร้างขึ้นโดยใช้สตริงการสืบค้นได้ (เช่น ?a=1&b=2) เนื่องจากลายเซ็นถูกสร้างขึ้นตามคีย์ลับซึ่งเฉพาะไคลเอนต์และผู้ให้บริการเท่านั้นที่ทราบ เราจึงสามารถพิจารณาเฉพาะสตริงการสืบค้นโดยไม่ต้องเรียงลำดับ/เข้ารหัสใดๆ
แล้วการสั่ง/เข้ารหัสแล้วสร้างลายเซ็นมีข้อดีอย่างไร?
คำถามที่ 2: ลายเซ็นนี้จะช่วยฉันจากการโจมตีแบบแทรกกลางได้อย่างไร
หากฉันต้องส่งคำขอเช่นนี้ไปยังเซิร์ฟเวอร์ของฉันจากไคลเอนต์:
increaseUserPoints?userId=1&pointsToAdd=5&appId=x&token=XYZ
ตอนนี้โทเค็น XYZ จะยังคงเหมือนเดิมเสมอ ดังนั้นแฮกเกอร์จึงสามารถโพสต์คำขอเดียวกันต่อไปเพื่อเพิ่ม points
เนื่องจากโทเค็นที่สร้างขึ้นจาก appId
ที่กำหนดเหมือนกัน เซิร์ฟเวอร์จะอนุญาตสิ่งนี้ คดีนี้จัดการอย่างไร?