XMLHttpRequest การรับรองความถูกต้องพื้นฐานและรหัสผ่านที่หมดอายุ

ฉันใช้ XMLHttpRequest และ basic-auth เพื่อเข้าถึงอินเทอร์เฟซของแอปพลิเคชัน รหัสผ่านเป็นแบบชั่วคราวและสร้างขึ้นโดยคำขออื่น ดังนั้นรหัสผ่านจะหมดอายุหลังจากผ่านไประยะหนึ่ง

แต่เบราว์เซอร์ (อย่างน้อย Firefox) ยังคงใช้อันเก่าต่อไป ล้มเหลวและแสดงป๊อปอัปการเข้าสู่ระบบ หากฉันระงับป๊อปอัปโดยส่งคืน 403 สำหรับคำขอด้วย X-Requested-By และรหัสผ่านผิด mozilla จะไม่พยายามใช้รหัสผ่านใหม่ (firebug แสดงรหัสผ่านใหม่ในคำขอ เซิร์ฟเวอร์ได้รับเก่า)

ปัญหาสามารถหลีกเลี่ยงได้โดยการเพิ่ม 'เกลือ' แบบสุ่มให้กับชื่อผู้ใช้ (และลอกที่ฝั่งเซิร์ฟเวอร์) แต่มีวิธีที่ดีกว่าในการบังคับให้ XMLHttpRequest ใช้รหัสผ่านที่ให้มาแทนที่จะแคชหรือไม่


person ymv    schedule 21.07.2009    source แหล่งที่มา


คำตอบ (1)


การตอบสนอง 401 รวมถึง "โดเมนการรับรองความถูกต้อง" ซึ่งเป็นค่าเริ่มต้นสำหรับ URL ทั้งหมดบนเซิร์ฟเวอร์ (ดู อาร์เอฟซี 2617) เบราว์เซอร์คาดว่าจะให้ข้อมูลประจำตัวเดียวกันกับความท้าทายจากโดเมนเดียวกัน

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

person kdgregory    schedule 21.07.2009
comment
คุณไม่ได้หมายถึง 401 คำตอบใช่ไหม - person ymv; 21.07.2009