แนะนำการตรวจสอบข้อ จำกัด HTML5
เว็บไซต์และแอปพลิเคชั่นที่ไม่สามารถจินตนาการได้หากไม่มีแบบฟอร์มที่ทำให้เราสามารถ เชื่อมต่อกับผู้ใช้ของเรา, และ รับข้อมูล เราต้องการเพื่อความปลอดภัยในการทำธุรกรรมกับพวกเขา เราต้องการ อินพุตของผู้ใช้ที่ถูกต้อง, อย่างไรก็ตามเราจำเป็นต้องได้รับในลักษณะที่ ไม่รอดพ้น ผู้ใช้ของเรามากเกินไป.
ในขณะที่เราสามารถปรับปรุงการใช้งานแบบฟอร์มของเราด้วยรูปแบบการออกแบบ UX ที่เลือกสรรมาอย่างชาญฉลาด HTML5 ยังมีกลไกดั้งเดิมสำหรับการตรวจสอบความถูกต้องของข้อ จำกัด ที่ทำให้เราสามารถ ตรวจจับข้อผิดพลาดของอินพุตในส่วนหน้า.
ในโพสต์นี้เราจะเน้น การตรวจสอบข้อ จำกัด ที่มากับเบราว์เซอร์, และดูว่าผู้พัฒนาส่วนหน้าทำได้อย่างไร การป้อนข้อมูลที่ปลอดภัยของผู้ใช้ที่ถูกต้องโดยใช้ HTML5.
ทำไมเราต้องการการตรวจสอบอินพุตส่วนหน้า
การตรวจสอบอินพุต มีสองเป้าหมายหลัก เนื้อหาที่เราต้องได้รับคือ:
1. มีประโยชน์
พวกเราต้องการ ข้อมูลที่ใช้งานได้ที่เราสามารถทำงานได้. เราต้องทำให้ผู้คนเข้ามา ข้อมูลจริงในรูปแบบที่ถูกต้อง. ตัวอย่างเช่นไม่มีใครที่มีชีวิตอยู่ในวันนี้เกิดเมื่อ 200 ปีก่อน การรับข้อมูลเช่นนี้อาจดูตลกในตอนแรก แต่ในระยะยาวมันน่ารำคาญและเติมฐานข้อมูลของเราด้วยข้อมูลที่ไร้ประโยชน์.
2. ปลอดภัย
เมื่อกล่าวถึงความปลอดภัยหมายความว่าเราจำเป็นต้อง ป้องกันการฉีดเนื้อหาที่เป็นอันตราย - ไม่ว่าจะโดยเจตนาหรือโดยอุบัติเหตุ.
สามารถรับประโยชน์ (รับข้อมูลที่สมเหตุสมผล) ได้ เฉพาะในฝั่งไคลเอ็นต์, ทีมแบ็กเอนด์ไม่สามารถช่วยเหลือสิ่งนี้มากเกินไป เพื่อให้บรรลุ ความปลอดภัย, ผู้พัฒนาส่วนหน้าและส่วนหลังจำเป็นต้องทำงานร่วมกัน.
หากนักพัฒนาส่วนหน้าตรวจสอบความถูกต้องของข้อมูลในฝั่งไคลเอ็นต์ ทีมแบ็กเอนด์จะต้องจัดการกับช่องโหว่ที่น้อยกว่ามาก. การแฮ็ก (ไซต์) มักก่อให้เกิด ส่งข้อมูลพิเศษ, หรือ ข้อมูลในรูปแบบที่ไม่ถูกต้อง. นักพัฒนาสามารถต่อสู้กับช่องโหว่ด้านความปลอดภัยเช่นนี้ประสบความสำเร็จในการต่อสู้จากส่วนหน้า.
ตัวอย่างเช่นคู่มือความปลอดภัย PHP แนะนำให้ตรวจสอบทุกอย่างที่เราสามารถทำได้ในฝั่งไคลเอ็นต์ พวกเขาเน้นความสำคัญของการตรวจสอบอินพุตส่วนหน้าโดยให้ตัวอย่างมากมายเช่น:
"การตรวจสอบความถูกต้องของข้อมูลทำงานได้ดีที่สุดกับค่าที่ จำกัด อย่างยิ่งเช่นเมื่อบางสิ่งต้องเป็นจำนวนเต็มหรือสตริงตัวอักษรและตัวเลขหรือ URL URL"
ในการตรวจสอบอินพุต frontend งานของเราคือ กำหนดข้อ จำกัด ที่สมเหตุสมผล ในการป้อนข้อมูลของผู้ใช้ คุณลักษณะการตรวจสอบข้อ จำกัด ของ HTML5 ช่วยให้เราทราบวิธีการดังกล่าว.
การตรวจสอบข้อ จำกัด HTML5
ก่อน HTML5 นักพัฒนาส่วนหน้าถูก จำกัด ตรวจสอบการป้อนข้อมูลของผู้ใช้ด้วย JavaScript, ซึ่งเป็นกระบวนการที่น่าเบื่อและผิดพลาดได้ง่าย เพื่อปรับปรุงการตรวจสอบรูปแบบฝั่งไคลเอ็นต์ HTML5 ได้แนะนำ การตรวจสอบข้อ จำกัด อัลกอริทึมที่ทำงานในเบราว์เซอร์สมัยใหม่และ ตรวจสอบความถูกต้องของอินพุตที่ส่ง.
ในการประเมินผลอัลกอริทึมใช้ คุณลักษณะที่เกี่ยวข้องกับการตรวจสอบความถูกต้องขององค์ประกอบอินพุต, เช่น ,
, และ
. หากคุณต้องการทราบวิธีการตรวจสอบข้อ จำกัด เกิดขึ้นทีละขั้นตอนในเบราว์เซอร์ตรวจสอบเอกสาร WhatWG นี้.
ด้วยคุณสมบัติการตรวจสอบข้อ จำกัด ของ HTML5 เราสามารถดำเนินการทั้งหมดได้ ภารกิจการตรวจสอบอินพุตมาตรฐาน ในฝั่งไคลเอ็นต์ ไม่มี JavaScript โดยใช้ HTML5 เพียงอย่างเดียว.
ในการทำงานที่เกี่ยวข้องกับการตรวจสอบที่ซับซ้อนยิ่งขึ้น HTML5 มอบ a. ให้กับเรา API การตรวจสอบข้อ จำกัด JavaScript เราสามารถใช้เพื่อตั้งค่าสคริปต์ตรวจสอบที่กำหนดเองของเรา.
ตรวจสอบกับประเภทสัญญาณความหมาย
HTML5 ได้เปิดตัว ชนิดอินพุตแบบ semantic ที่ - นอกเหนือจากการระบุความหมายขององค์ประกอบสำหรับตัวแทนผู้ใช้ - ยังสามารถใช้ในการ ตรวจสอบการป้อนข้อมูลของผู้ใช้ โดย จำกัด ผู้ใช้ในรูปแบบอินพุตที่แน่นอน.
นอกจากประเภทอินพุตที่มีอยู่ก่อนหน้า HTML5 แล้ว (ข้อความ
, รหัสผ่าน
, เสนอ
, รีเซ็ต
, วิทยุ
, ช่องทำเครื่องหมาย
, ปุ่ม
, ซ่อนเร้น
) เรายังสามารถใช้ต่อไปนี้ ประเภทอินพุต HTML5 semantic: อีเมล
,โทร
,URL
,จำนวน
,เวลา
,วันที่
,วันเวลา
,วันที่และเวลาท้องถิ่น
, เดือน
,สัปดาห์
, พิสัย
, ค้นหา
,สี
.
เราสามารถใช้ประเภทอินพุต HTML5 กับเบราว์เซอร์รุ่นเก่าได้อย่างปลอดภัยเนื่องจากมันจะทำงานเป็น ในเบราว์เซอร์ที่ไม่รองรับ.
มาดูกันว่าจะเกิดอะไรขึ้นเมื่อผู้ใช้ป้อนประเภทอินพุตผิด สมมติว่าเราได้สร้างช่องป้อนอีเมลด้วยรหัสต่อไปนี้:
เมื่อผู้ใช้พิมพ์สตริงที่ไม่ได้ใช้รูปแบบอีเมลอัลกอริทึมการตรวจสอบข้อ จำกัด ไม่ส่งแบบฟอร์ม, และ ส่งคืนข้อความแสดงข้อผิดพลาด:
กฎเดียวกันนี้ใช้กับประเภทอินพุตอื่นเช่นกัน พิมพ์ = "URL"
ผู้ใช้สามารถส่งอินพุตที่เป็นไปตามรูปแบบ URL เท่านั้น (เริ่มต้นด้วยโปรโตคอลเช่น http: //
หรือ ftp: //
).
อินพุตบางชนิดใช้การออกแบบที่ ไม่อนุญาตให้ผู้ใช้ป้อนรูปแบบการป้อนที่ไม่ถูกต้อง, ตัวอย่างเช่น สี
และ พิสัย
.
ถ้าเราใช้ สี
ประเภทอินพุตที่ผู้ใช้มีข้อ จำกัด ในการเลือกสีจากเครื่องมือเลือกสีหรือใช้สีดำเป็นค่าเริ่มต้น ช่องป้อนข้อมูลคือ ถูก จำกัด ด้วยการออกแบบ, ดังนั้นจึงไม่ปล่อยให้โอกาสมากสำหรับข้อผิดพลาดของผู้ใช้.
เมื่อเหมาะสมก็ควรพิจารณาใช้ แท็ก HTML ที่ทำงานคล้ายกับประเภทอินพุตที่ จำกัด โดยการออกแบบเหล่านี้ มันช่วยให้ผู้ใช้เลือกจากรายการแบบเลื่อนลง.
ใช้คุณสมบัติการตรวจสอบของ HTML5
การใช้ประเภทอินพุตแบบ semantic จะกำหนดข้อ จำกัด บางประการเกี่ยวกับสิ่งที่ผู้ใช้ได้รับอนุญาตให้ส่ง แต่ในหลาย ๆ กรณีเราต้องการที่จะเพิ่มขึ้นอีกเล็กน้อย นี่คือเมื่อ แอตทริบิวต์ที่เกี่ยวข้องกับการตรวจสอบ ของ แท็กสามารถช่วยเราออก.
แอตทริบิวต์ที่เกี่ยวข้องกับการตรวจสอบความถูกต้องเป็นของประเภทอินพุตบางอย่าง (ไม่สามารถใช้งานได้ ทั้งหมด ประเภท) ที่พวกเขากำหนดข้อ จำกัด เพิ่มเติม.
1. จำเป็นต้องใช้
สำหรับการรับอินพุตที่ถูกต้องโดยวิธีการทั้งหมด
จำเป็นต้องใช้
คุณลักษณะเป็นคุณลักษณะการตรวจสอบ HTML ที่รู้จักกันดีที่สุด มันคือ แอตทริบิวต์บูลีน ซึ่งหมายความว่ามัน ไม่รับค่าใด ๆ, เราเพียงแค่ต้องวางไว้ภายใน แท็กถ้าเราต้องการใช้:
หากผู้ใช้ลืมที่จะป้อนค่าลงในช่องป้อนข้อมูลที่จำเป็นเบราว์เซอร์ ส่งคืนข้อความแสดงข้อผิดพลาด ที่เตือนพวกเขาให้กรอกในช่องและพวกเขา ไม่สามารถส่งแบบฟอร์ม จนกว่าพวกเขาจะให้ข้อมูลที่ถูกต้อง นั่นเป็นเหตุผลที่สำคัญเสมอ ทำเครื่องหมายด้วยสายตา เขตข้อมูลที่จำเป็นให้กับผู้ใช้.
จำเป็นต้องใช้
คุณลักษณะสามารถ ใช้ร่วมกับประเภทอินพุตต่อไปนี้: ข้อความ
, ค้นหา
, URL
, โทร
, อีเมล
, รหัสผ่าน
, วันที่
, วันเวลา
, วันที่และเวลาท้องถิ่น
, เดือน
, สัปดาห์
,เวลา
, จำนวน
, ช่องทำเครื่องหมาย
, วิทยุ
, ไฟล์
, บวกกับ และ
แท็ก HTML.
2. นาที
, สูงสุด
และ ขั้นตอน
สำหรับการตรวจสอบหมายเลข
นาที
, สูงสุด
และ ขั้นตอน
คุณลักษณะช่วยให้เราสามารถ ใส่ข้อ จำกัด ลงในช่องใส่หมายเลข. พวกเขาสามารถใช้ร่วมกับ พิสัย
, จำนวน
, วันที่
, เดือน
, สัปดาห์
, วันเวลา
, วันที่และเวลาท้องถิ่น
, และ เวลา
ประเภทอินพุต.
นาที
และ สูงสุด
คุณลักษณะให้วิธีที่ดีในการได้อย่างง่ายดาย ยกเว้นข้อมูลที่ไม่สมเหตุสมผล. ตัวอย่างเช่นตัวอย่างด้านล่างบังคับให้ผู้ใช้ส่งอายุระหว่าง 18 ถึง 120.
เมื่ออัลกอริทึมการตรวจสอบข้อ จำกัด กระแทกเข้ากับผู้ใช้ที่มีขนาดเล็กกว่า นาที
, หรือใหญ่กว่า สูงสุด
ค่ามันจะป้องกันไม่ให้เข้าถึงส่วนแบ็คเอนด์และส่งกลับข้อผิดพลาด.
ขั้นตอน
คุณลักษณะ ระบุช่วงเวลาที่เป็นตัวเลข ระหว่างค่าทางกฎหมายของช่องใส่ตัวเลข ตัวอย่างเช่นหากเราต้องการให้ผู้ใช้เลือกเฉพาะจากปีอธิกสุรทินเราสามารถเพิ่ม ขั้นตอน = "4"
คุณลักษณะไปที่สนาม ในตัวอย่างด้านล่างฉันใช้ จำนวน
ประเภทอินพุตเนื่องจากไม่มี type = "ปี"
ใน HTML5.
ด้วยข้อ จำกัด ที่กำหนดไว้ล่วงหน้าผู้ใช้สามารถเลือกได้จากปีอธิกสุรทินระหว่างปีพ. ศ. 2515 และ 2559 หากพวกเขาใช้ลูกศรขึ้นเล็ก ๆ ที่มาพร้อมกับ จำนวน
ประเภทอินพุต พวกเขายังสามารถพิมพ์ค่าด้วยตนเองลงในช่องใส่ แต่ในกรณีที่มันไม่เป็นไปตามข้อ จำกัด เบราว์เซอร์จะกลับข้อผิดพลาด.
3. maxlength
สำหรับการตรวจสอบความยาวข้อความ
maxlength
คุณลักษณะทำให้มันเป็นไปได้ ตั้งค่าความยาวอักขระสูงสุด สำหรับช่องใส่ข้อความ มันสามารถใช้ร่วมกับ ข้อความ
, ค้นหา
, URL
, โทร
, อีเมล
และ รหัสผ่าน
ประเภทอินพุตและด้วย แท็ก HTML.
maxlength
แอตทริบิวต์อาจเป็นโซลูชันที่ยอดเยี่ยมสำหรับฟิลด์หมายเลขโทรศัพท์ที่ไม่มีอักขระเกินจำนวนที่กำหนดหรือสำหรับแบบฟอร์มการติดต่อที่เราไม่ต้องการให้ผู้ใช้เขียนมากกว่าความยาวที่แน่นอน.
ข้อมูลโค้ดด้านล่างแสดงตัวอย่างสำหรับส่วนหลังซึ่ง จำกัด ข้อความของผู้ใช้ไว้ที่ 500 ตัวอักษร.
maxlength
คุณลักษณะ ไม่ส่งคืนข้อความแสดงข้อผิดพลาด, แต่เบราว์เซอร์ไม่อนุญาตให้ผู้ใช้พิมพ์เกินจำนวนอักขระที่ระบุ นั่นเป็นสาเหตุที่สำคัญ แจ้งผู้ใช้เกี่ยวกับข้อ จำกัด, ไม่เช่นนั้นพวกเขาจะไม่เข้าใจว่าทำไมพวกเขาจึงไม่สามารถพิมพ์ต่อไปได้.
4. แบบแผน
สำหรับการตรวจสอบ Regex
แบบแผน
คุณลักษณะช่วยให้เรา ใช้นิพจน์ปกติ ในกระบวนการตรวจสอบอินพุตของเรา การแสดงออกปกติคือ ชุดอักขระที่กำหนดไว้ล่วงหน้า นั่นเป็นรูปแบบที่แน่นอน เราสามารถใช้มันเพื่อค้นหาสตริงที่เป็นไปตามรูปแบบหรือเพื่อบังคับใช้รูปแบบบางอย่างที่กำหนดโดยรูปแบบ.
กับ แบบแผน
คุณลักษณะที่เราสามารถทำได้หลัง - จำกัด ผู้ใช้เพื่อส่งข้อมูลของพวกเขาในรูปแบบที่ ตรงกับการแสดงออกปกติที่กำหนด.
แบบแผน
แอตทริบิวต์มีกรณีการใช้งานมากมาย แต่มันมีประโยชน์อย่างยิ่งเมื่อเราต้องการ ตรวจสอบความถูกต้องของฟิลด์รหัสผ่าน.
ตัวอย่างด้านล่างกำหนดให้ผู้ใช้ป้อนรหัสผ่านที่มีความยาวอย่างน้อย 8 ตัวอักษรและมีอย่างน้อยหนึ่งตัวอักษรและหนึ่งหมายเลข (แหล่งที่มาของ regex ที่ฉันใช้).
อีกสองสามสิ่ง
ในบทความนี้เราได้ดูวิธีการใช้ประโยชน์จาก การตรวจสอบความถูกต้องของฟอร์มของเบราว์เซอร์ จัดทำโดยอัลกอริทึมการตรวจสอบข้อ จำกัด พื้นเมือง HTML5 สำหรับการสร้างสคริปต์การตรวจสอบที่กำหนดเองของเราเราจำเป็นต้องใช้ API การตรวจสอบความถูกต้องซึ่งอาจเป็นขั้นตอนต่อไปในการปรับแต่งทักษะการตรวจสอบแบบฟอร์ม.
แบบฟอร์ม HTML5 สามารถเข้าถึงได้โดยเทคโนโลยีช่วยเหลือดังนั้นเราไม่จำเป็นต้องใช้ เพลงที่จำเป็น
คุณลักษณะ ARIA เพื่อทำเครื่องหมายฟิลด์ป้อนข้อมูลที่จำเป็นสำหรับโปรแกรมอ่านหน้าจอ อย่างไรก็ตามยังคงมีประโยชน์ในการเพิ่มการรองรับการเข้าถึงสำหรับเบราว์เซอร์รุ่นเก่า มันเป็นไปได้ที่จะ ยกเลิกการตรวจสอบข้อ จำกัด โดยการเพิ่ม novalidate
แอตทริบิวต์บูลีนเพื่อ ธาตุ.