ฟอร์มบางฟอร์มมีช่องใน iframe ซึ่งทำให้เกิดปัญหากับการป้อนข้อความอัตโนมัติของเบราว์เซอร์ เมื่อใช้การป้อนข้อความอัตโนมัติที่แชร์ เฟรมหลักจะกำหนดความน่าเชื่อถือของ iframe ข้ามแหล่งที่มาได้ เพื่อรองรับประสบการณ์การป้อนข้อความอัตโนมัติที่ดียิ่งขึ้นสำหรับผู้ใช้
เรามีข้อเสนอในการอนุญาตให้ป้อนข้อความอัตโนมัติใน iframe แบบข้ามต้นทางสำหรับการทดสอบ ฟีเจอร์นี้ช่วยให้เฟรมหลักสามารถกำหนดเฟรมที่ควรมีการป้อนข้อความอัตโนมัติในช่อง ซึ่งมีประโยชน์อย่างยิ่งสำหรับแบบฟอร์มการชำระเงินที่มักจะมีการโหลดช่องที่มีความละเอียดอ่อน (เพื่อปฏิบัติตามข้อกำหนด PCI DSS) จากแหล่งที่มาของบุคคลที่สาม เช่น ผู้ให้บริการชำระเงิน (PSP)
ในตัวอย่างต่อไปนี้ ชื่อผู้ถือบัตรและวันที่หมดอายุอยู่ในหน้าระดับบนสุด (หรือเฟรมหลัก) แต่หมายเลขบัตรเครดิตและรหัสยืนยันอยู่ใน iframe จาก PSP
<!-- Top-level document URL: https://merchant.com/... -->
<form>
Cardholder name: <input id="name">
Credit card number: <iframe src="https://psp.com/..."><input id="num"></iframe>
Expiration date: <input id="exp">
CVC: <iframe src="https://psp.com/..."><input id="cvc"></iframe>
</form>
แผนภาพต่อไปนี้แสดงโครงสร้างของแบบฟอร์ม
การออกแบบนี้รวมความปลอดภัยและความยืดหยุ่นเข้าไว้ด้วยกันสำหรับผู้ขาย ดังนี้
- IFrame ข้ามแหล่งที่มาจะแยกข้อมูลการชำระเงินที่ละเอียดอ่อนออกจากโครงสร้างพื้นฐานของผู้ขาย ซึ่งช่วยในการปฏิบัติตามข้อกำหนด PCI DSS
- คุณสามารถจัดเรียงและจัดรูปแบบช่องในแบบฟอร์มของเฟรมต่างๆ ให้ตรงกับรูปลักษณ์และความรู้สึกของเว็บไซต์ของผู้ขายได้
จากมุมมองของเบราว์เซอร์ กรณีการใช้งานแบบหลายเฟรมสำหรับแบบฟอร์มนั้นถือเป็นกรณีการใช้งานที่พบบ่อยและถูกต้องตามกฎหมาย ซึ่งทำให้เกิดคำถามเกี่ยวกับรูปแบบความปลอดภัยสำหรับแบบฟอร์ม ผู้ใช้อาจได้รับประสบการณ์การป้อนข้อความอัตโนมัติที่ไม่ดีจากแบบฟอร์มหลายเฟรม เช่น ตัวอย่างต่อไปนี้
นโยบายต้นทางเดียวกันเป็นพื้นฐานที่มั่นคงสำหรับการป้อนข้อความอัตโนมัติในเฟรมต่างๆ แต่ไม่ได้ให้รายละเอียดที่ละเอียดเพียงพอสำหรับเบราว์เซอร์ในการแยกความแตกต่างระหว่างเฟรมที่เชื่อถือและไม่เชื่อถือสำหรับการป้อนข้อความอัตโนมัติ
ทีม Chrome กำลังดำเนินการตามข้อเสนอที่อนุญาตให้ป้อนข้อความอัตโนมัติใน iframe ข้ามแหล่งที่มา เพื่อให้ผู้ใช้ได้รับประสบการณ์การป้อนข้อความอัตโนมัติที่ดียิ่งขึ้นและรักษาความปลอดภัยของข้อมูลผู้ใช้ หากมีการเปลี่ยนแปลงแบบฟอร์มให้ใช้การป้อนข้อความอัตโนมัติที่แชร์ Chrome จะกรอกหมายเลขบัตรเครดิตข้ามแหล่งที่มาได้สําเร็จ ดังนี้
<!-- Top-level document URL: https://merchant.com/... -->
<form>
Cardholder name: <input id="name">
Credit card number: <iframe src="https://psp.com/..." allow="shared-autofill"><input id="num"></iframe>
Expiration date: <input id="exp">
CVC: <iframe src="https://psp.com/..." allow="shared-autofill"><input id="cvc"></iframe>
</form>
ซึ่งอาจส่งผลให้ผู้ใช้ได้รับประสบการณ์การป้อนข้อความอัตโนมัติที่ดียิ่งขึ้น
ลองใช้การป้อนข้อความอัตโนมัติที่แชร์ในเครื่อง
คุณสามารถทดสอบการป้อนข้อความอัตโนมัติที่แชร์สำหรับผู้ใช้ได้ 1 คนใน Chrome 93.0.4577.0 ขึ้นไปบนเดสก์ท็อปและอุปกรณ์เคลื่อนที่โดยการตั้งค่า Flag จากบรรทัดคำสั่ง
--flag-switches-begin --enable-features=AutofillAcrossIframes,AutofillSharedAutofill
ตรวจหาการรองรับฟีเจอร์
ใช้โค้ดต่อไปนี้เพื่อตรวจหาว่าพร็อพเพอร์ตี้ shared-autofill
พร้อมใช้งานหรือไม่
if (document.featurePolicy && document.featurePolicy
.features().includes('shared-autofill')) {
console.log('shared-autofill available!');
}
ขั้นตอนถัดไปคือ
การป้อนข้อความอัตโนมัติที่แชร์เป็นข้อเสนอเริ่มต้นในการเพิ่มฟีเจอร์ป้อนข้อความอัตโนมัติลงในนโยบายสิทธิ์ ขณะนี้ทีม Chrome กำลังทำงานร่วมกับผู้ให้บริการเบราว์เซอร์รายอื่นๆ เพื่อขอรับการตรวจสอบข้อเสนอ นอกจากนี้ เรายังอยู่ระหว่างหารือเกี่ยวกับวิธีปรับปรุงประสบการณ์ของผู้ใช้สำหรับการป้อนข้อความอัตโนมัติใน iframe
เราจะแจ้งข้อมูลอัปเดตให้คุณทราบอย่างต่อเนื่องเมื่อเราดำเนินการตามข้อเสนอนี้ ในระหว่างนี้ หากคุณมีหน้าชำระเงินที่ฝังช่อง <input> ที่มีความละเอียดอ่อน (หมายเลขบัตรเครดิต, CVV) จากผู้ให้บริการบุคคลที่สาม โปรดติดต่อเรา เราอยากทราบว่าการป้อนข้อความอัตโนมัติที่แชร์ใน iframe อาจช่วยปรับปรุงประสบการณ์การป้อนข้อความอัตโนมัติของผู้ใช้ในระหว่างกระบวนการชำระเงินได้หรือไม่
ดูข้อมูลเพิ่มเติม
- ข้อเสนอปัจจุบัน
- การตรวจสอบ TAG ของ W3C
- ตัวอย่างแบบฟอร์มการชำระเงินที่ใช้ในโพสต์นี้
- Flag ของ Chrome คืออะไร
รูปภาพโดย Jessica Ruscello ใน Unsplash