เมนู

CVV คืออะไร ทำไมห้ามเก็บไว้ในระบบ

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

เผยแพร่เมื่อ

  • การชำระเงิน
  • ความปลอดภัย

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

CVV คืออะไรและอยู่ตรงไหนบนบัตร?

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

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

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

CVV ต่างจากรหัส PIN ตรงไหน?

ผู้ใช้อ่านคำถามนี้บ่อยมาก และความสับสนระหว่างสองอย่างนี้ทำให้มีการกรอกรหัสผิดประเภทซ้ำแล้วซ้ำอีก ความต่างอยู่ที่ว่าใครเป็นผู้ตรวจสอบ

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

ในทางกฎระเบียบ ความต่างนี้สำคัญมาก เพราะรหัสที่ผู้ถือบัตรกำหนดเองมีข้อกำหนดคุ้มครองที่เข้มงวดกว่ารหัสบนบัตร และทั้งสองอย่างมีข้อจำกัดที่ห้ามจัดเก็บไว้หลังการทำรายการเช่นเดียวกัน

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

ทำไม CVV จึงห้ามถูกเก็บไว้หลังอนุมัติ?

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

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

ในทางกลับกัน ข้อกำหนดเดียวกันก็กำหนดด้วยว่าข้อมูลบัญชีที่จัดเก็บไว้ต้องได้รับการคุ้มครอง และเมื่อต้องแสดงผลให้แสดงเพียงบางส่วน เช่น หลักต้นและหลักท้ายไม่กี่หลัก วิธีปฏิบัติเหล่านี้อธิบายไว้ละเอียดขึ้นในบทความเรื่องข้อมูลทดสอบกับ PCI DSS

ฟอร์มชำระเงินจำเป็นต้องมีช่อง CVV เสมอไหม

ไม่เสมอไป ช่องนี้มีความจำเป็นสูงสุดเมื่อทำธุรกรรมที่ไม่ได้ใช้ตัวบัตร แต่ในบางกรณีก็ไม่ถูกเรียกใช้หรือถูกทำให้ข้ามได้

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

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

สิ่งที่ควรทำเมื่อพบ CVV ในที่ที่ไม่ควรอยู่

ข้อผิดพลาดที่เกิดบ่อยไม่ได้มาจากเจตนาร้าย แต่มาจากความเคยชินของทีมงาน ลองตรวจดูว่าองค์กรของคุณมีพฤติกรรมเหล่านี้หรือไม่

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

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

สำหรับนักพัฒนา: เก็บเท่าที่จำเป็นและปิดการบันทึกโดยปริยาย

สิ่งที่ทำได้จริงในระดับงานพัฒนาเริ่มจากการกำหนดให้ข้อมูลยืนยันตัวตนเป็นค่าที่ “ผ่านทางเท่านั้น” ไม่มีเส้นทางใดในระบบที่เขียนค่าลงที่จัดเก็บถาวรได้ วิธีปฏิบัติที่ช่วยได้มากมีดังนี้

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

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

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

ก้าวต่อไป

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

อ่านต่อ

บทความเกี่ยวกับ เครื่องมือสร้างหมายเลขบัตรเครดิตปลอม

บทความเกี่ยวกับ เครื่องมือสร้างหมายเลขบัตรเครดิตปลอม

รายการนี้แสดงเฉพาะบทความในหัวข้อของหน้านี้