מבוא לתוך אימות HTML5 אילוצים
לא ניתן לדמיין אתרים ויישומים אינטראקטיביים ללא טפסים המאפשרים לנו להתחבר למשתמשים שלנו, ול לקבל את הנתונים אנחנו צריכים על מנת להבטיח עסקאות חלקות איתם. אנחנו צריכים קלט משתמש חוקי, אבל אנחנו צריכים לרכוש אותו באופן כזה אינו מתסכל המשתמשים שלנו יותר מדי.
בעוד אנו יכולים לשפר את השימושיות של הטפסים שלנו עם תבניות עיצוב UX שנבחרו בחוכמה, HTML5 יש גם מנגנון יליד לאימות אילוץ המאפשרים לנו לתפוס שגיאות קלט ממש בחזית.
בהודעה זו, נתמקד אימות אילוצים שסופקו על ידי הדפדפן, ולבדוק איך מפתחי frontend יכול קלט משתמש חוקי מאובטח באמצעות HTML5.
למה אנחנו צריכים אימות חזיתי קלט
אימות קלט יש שתי מטרות עיקריות. התוכן שאנו מקבלים צריך להיות:
1. שימושי
אנחנו צריכים נתונים שמיש אנחנו יכולים לעבוד עם. אנחנו צריכים לגרום לאנשים להיכנס נתונים מציאותיים בפורמט הנכון. למשל, אף אחד לא חי היום נולד לפני 200 שנה. קבלת נתונים כמו זה אולי נראה מצחיק בהתחלה, אבל בטווח הארוך זה מעצבן, ולאכול את הנתונים שלנו עם נתונים חסרי תועלת.
2. מאובטח
כאשר מתייחסים לביטחון, זה אומר שאנחנו צריכים למנוע הזרקת תוכן זדוני - בין אם בכוונה ובין אם במקרה.
תועלת (מקבל נתונים סבירים) ניתן להשיג רק בצד הלקוח, צוות backend לא יכול לעזור יותר מדי עם זה. כדי להשיג אבטחה, מפתחי קדמי ו- backend צריכים לעבוד יחד.
אם מפתחי Frontend מאמתים כראוי קלט בצד הלקוח, צוות backend יצטרך להתמודד עם הרבה פחות פגיעויות. פריצה (אתר) לעיתים קרובות כרוכה שולח נתונים נוספים, או נתונים בפורמט לא נכון. מפתחים יכולים להילחם חורים אבטחה כאלה, בהצלחה להילחם מהחזית.
לדוגמה, זה מדריך האבטחה PHP ממליץ לבדוק כל מה שאנחנו יכולים בצד הלקוח. הם מדגישים את החשיבות של אימות קלט חזיתי על ידי מתן דוגמאות רבות, כגון:
"אימות הקלט פועל בצורה הטובה ביותר עם ערכים מוגבלים מאוד, למשל כאשר משהו חייב להיות מספר שלם או מחרוזת אלפאנומרית או כתובת אתר של HTTP."
ב אימות קלט frontend, התפקיד שלנו הוא להטיל מגבלות סבירות על קלט המשתמש. תכונת האימות של HTML5 מספקת לנו את האמצעים לעשות זאת.
אימות אימות HTML5
לפני HTML5, מפתחי Frontend הוגבלו ל אימות קלט משתמש עם, שהיה תהליך מייגע ונוטה לשגיאות. כדי לשפר את אימות הטופס בצד הלקוח, HTML5 הציג - אימות אלגוריתם זה פועל בדפדפנים המודרניים, ו בודק את תוקפו של התשומה שהוגשה.
כדי לבצע את ההערכה, האלגוריתם משתמש תכונות הקשורות לאימות של רכיבי קלט, כמו ,
, ו
. אם אתה רוצה לדעת איך אימות אילוצים קורה צעד אחר צעד בדפדפן לבדוק את זה WhatWG דוק.
הודות לתכונת האימות של HTML5, אנו יכולים לבצע הכל משימות אימות סטנדרטי קלט בצד הלקוח ללא JavaScript, אך ורק עם HTML5.
כדי לבצע משימות מורכבות יותר הקשורות לאימות, HTML5 מספק לנו הגבלת אימות אנו יכולים להשתמש כדי להגדיר סקריפטים אימות מותאם אישית שלנו.
אמת עם סוגי קלט סמנטי
HTML5 הציגה סוגי קלט סמנטיים כי - מלבד מציין את המשמעות של אלמנט עבור סוכני משתמש - יכול לשמש גם לאמת קלט משתמש על ידי הגבלת משתמשים לתבנית קלט מסוימת.
מלבד סוגי הקלט שכבר קיימים לפני HTML5 (טקסט
, סיסמה
, שלח
, לאפס
, רדיו
, תיבת סימון
, כפתור
, מוסתר
), אנחנו יכולים גם להשתמש הבאות HTML5 סמנטי קלט סוגיYou דוא"ל
,טל
,כתובת אתר
,מספר
,זמן
,אשר
,תאריך שעה
,datetime-local
, חודש
,שבוע
, טווח
, לחפש
,צבע
.
אנו יכולים להשתמש בבטחה בקודים מסוג HTML5 עם דפדפנים ישנים יותר, שכן הם יפעלו כ שדה בדפדפנים שאינם תומכים בהם.
בוא נראה מה קורה כאשר המשתמש מזין סוג קלט שגוי. נניח שיצרנו שדה קלט דוא"ל עם הקוד הבא:
כאשר המשתמש מקליד מחרוזת שאינה משתמשת בתבנית דוא"ל, אלגוריתם אימות האילוצים אינו מגיש את הטופס, ו מחזירה הודעת שגיאהYou
אותו כלל חל גם על סוגי קלט אחרים, לדוגמה type = "url"
משתמשים יכולים לשלוח קלט רק אחרי הפורמט של כתובת האתר (מתחיל בפרוטוקול, כגון http: //
או ftp: //
).
סוגי קלט מסוימים משתמשים בעיצוב זה אפילו לא מאפשר למשתמשים להזין פורמט קלט שגוי, לדוגמה צבע
ו טווח
.
אם נשתמש צבע
סוג קלט המשתמש הוא מוגבל או לבחור צבע מתוך בורר הצבע או להישאר עם ברירת המחדל שחור. שדה הקלט הוא מוגבל על ידי עיצוב, ולכן זה לא משאיר הרבה סיכוי עבור שגיאת המשתמש.
כאשר זה מתאים, כדאי לשקול להשתמש תג HTML שעובד באופן דומה לסוגי הקלט המוגבלים לפי העיצוב; הוא מאפשר למשתמשים לבחור מתוך רשימה נפתחת.
השתמש במאפיינים של אימות HTML5
שימוש בסוגי קלט סמנטיים קובע מגבלות מסוימות על מה שהמשתמשים מורשים לשלוח, אך במקרים רבים אנחנו רוצים להמשיך הלאה. זה הזמן שבו תכונות הקשורות לאימות של ה תג יכול לעזור לנו.
תכונות הקשורות לאימות שייכות לסוגים מסוימים של קלט (לא ניתן להשתמש בהם את כל טיפוסים) עליהם הם מטילים מגבלות נוספות.
1. נדרש
לקבלת קלט חוקי בכל האמצעים
ה נדרש
התכונה היא התכונה הידועה ביותר של אימות HTML. זה תכונה בוליאנית כלומר אינו לוקח כל ערך, אנחנו פשוט צריכים לשים אותו בתוך אם ברצוננו להשתמש בה:
אם המשתמש שוכח להזין ערך בשדה קלט נדרש, הדפדפן מחזירה הודעת שגיאה זה מזהיר אותם למלא את השדה, והם לא יכול להגיש את הטופס עד שהם סיפקו קלט חוקי. לכן חשוב תמיד סמן ויזואלית שדות חובה למשתמשים.
ה נדרש
התכונה יכולה להיות יחד עם סוגי הקלט הבאיםYou טקסט
, לחפש
, כתובת אתר
, טל
, דוא"ל
, סיסמה
, אשר
, תאריך שעה
, datetime-local
, חודש
, שבוע
,זמן
, מספר
, תיבת סימון
, רדיו
, קובץ
, בתוספת ו
תגי HTML.
2. דקות
, מקסימום
ו שלב
עבור אימות מספר
ה דקות
, מקסימום
ו שלב
תכונות מאפשרות לנו לשים אילוצים על מספר שדות קלט. הם יכולים לשמש יחד עם טווח
, מספר
, אשר
, חודש
, שבוע
, תאריך שעה
, datetime-local
, ו זמן
סוגי קלט.
ה דקות
ו מקסימום
תכונות לספק דרך מצוינת בקלות לא לכלול נתונים בלתי סבירים. לדוגמה, הדוגמה הבאה מאלצת משתמשים לשלוח גיל בין 18 ל -120.
כאשר אלגוריתם אימות האילוצים מכה לתוך קלט משתמש קטן יותר דקות
, או גדול מ מקסימום
ערך, הוא מונע ממנו להגיע backend, ומחזירה הודעת שגיאה.
ה שלב
תכונה מציין מרווח מספרי בין הערכים המשפטיים של שדה קלט מספרי. לדוגמה, אם אנחנו רוצים משתמשים לבחור רק מ שנים מעוברת אנו יכולים להוסיף את שלב = "4"
תכונה לשדה. בדוגמה הבאה השתמשתי מספר
סוג קלט, כמו שאין type = "year"
ב- HTML5.
עם אילוצים שנקבעו מראש, משתמשים יכולים לבחור בין שנים מעוברות בין 1972 ל -2016, אם הם משתמשים בחץ למעלה שמגיע עם מספר
סוג קלט. הם יכולים גם להקליד ערך באופן ידני לשדה הקלט, אך במקרה שהוא אינו עומד במגבלות, הדפדפן יחזיר הודעת שגיאה.
3. אורך מקסימלי
עבור אימות אורך טקסט
ה אורך מקסימלי
התכונה מאפשרת הגדר אורך תווים מרבי עבור שדות קלט טקסטואלי. זה יכול לשמש יחד עם טקסט
, לחפש
, כתובת אתר
, טל
, דוא"ל
ו סיסמה
סוגי קלט, ועם תג HTML.
ה אורך מקסימלי
התכונה יכולה להיות פתרון מצוין לשדות של מספרי טלפון שאינם יכולים לכלול יותר ממספר מסוים של תווים, או לטופסי יצירת קשר שבהם איננו רוצים שמשתמשים יכתבו יותר מאורך מסוים.
קטע הקוד להלן מציג דוגמה עבור האחרון, הוא מגביל הודעות משתמשים ל -500 תווים.
ה אורך מקסימלי
תכונה אינה מחזירה הודעת שגיאה, אבל הדפדפן פשוט לא מאפשר למשתמשים להקליד יותר ממספר התווים שצוין. לכן זה חיוני להודיע למשתמשים על האילוץ, אחרת הם לא יבין למה הם לא יכולים להמשיך עם הקלדת.
4. דפוס
עבור אימות Regex
ה דפוס
התכונה מאפשרת לנו השתמש בביטויים רגולריים בתהליך אימות הקלט שלנו. ביטוי רגיל הוא קבוצה מוגדרת מראש של תווים זה יוצר דפוס מסוים. אנו יכולים להשתמש בו גם כדי לחפש מחרוזות שעוקבות אחר התבנית, או לאכוף תבנית מסוימת המוגדרת על ידי התבנית.
עם ה דפוס
תכונה שאנחנו יכולים לעשות את זה האחרון - למשתמשים להגביל להגיש את הקלט שלהם בפורמט זה תואם את הביטוי הרגיל הנתון.
ה דפוס
לתכונה יש מקרים רבים לשימוש, אבל זה יכול להיות שימושי במיוחד כאשר אנחנו רוצים לאמת שדה סיסמה.
הדוגמה הבאה דורשת מהמשתמשים להזין סיסמה בגודל מינימלי של 8 תווים, והיא מכילה לפחות אות אחת ומספר אחד (מקור ה- regex שבו השתמשתי).
עוד כמה דברים
במאמר זה, היה לנו להסתכל איך לנצל את אימות טופס שסופק על ידי הדפדפן שסופקו על ידי אלגוריתם האימות המקורי של HTML5. ליצירת סקריפטים אימות מותאמים אישית שלנו, אנחנו צריכים להשתמש בממשק ה- API של אימות הגבלה זה יכול להיות הצעד הבא זיקוק טופס מיומנויות אימות.
טופסי HTML5 נגישים על ידי טכנולוגיות מסייעות, ולכן אנחנו לא בהכרח צריכים להשתמש אריה-נדרש
תכונת ARIA לסמן שדות קלט נדרשים עבור קוראי מסך. עם זאת, עדיין ניתן להוסיף תמיכה לנגישות עבור דפדפנים ישנים יותר. זה גם אפשרי ביטול הסכמת אימות על ידי הוספת novalidate
תכונה בוליאנית אלמנט.