למה חשוב לבדוק IsValid בצד השרת כשמשתמשים עם validators (איך אפשר לעקוף (לפרוץ) את הבדיקות בצד הלקוח)

1 בינואר 2010

 


 (זהו פוסט ה – 200 שלי, ואני חושב שזהו הפוסט הראשון בבלוגייה של השנה הלועזית החדשה)

 

שיש לכם דף עם תיבת טקסט שמוצמד אליו RequiredFieldValidator ולחצן.

בזמן לחיצה כותבים על הדף את השעה הנוכחית.

 

הקוד נראה כך:

 

<asp:TextBox runat="server" ID="txt1" />

<asp:RequiredFieldValidator ErrorMessage="*" ControlToValidate="txt1"


runat="server" />


 


<asp:Button Text="text" runat="server" ID="btn" OnClick="btn_click" />


 צד השרת:

 

 

protected void btn_click(object sender, EventArgs e)

{

Response.Write(DateTime.Now.ToLongTimeString());

}


 

כשנריץ נראה את הדף הבא

 

validator1

 

 

אם ננסה ללחוץ על הלחצן ללא ערך בתיבת הטקסט לא תתבצע ריצה לשרת ואחנו נראה כוככבית ליד תיבת הטקסט

 

validator2

 

 

כעת נראה איך כל האקר מתחיל עוקף את הבדיקה.

 

בהנחה שיש לכם IE8 מותקן לכם IE Developer Toolar במידה ויש לכם IE7 תוכלו להוריד את זה מכאן

 

אחרי שתלחצו על הלחצן ותקבלו את הכוכבית – תפעילו את ה – Devloper Tool Bar (לחיצה על F12).

 

תקבלו את המסך הבא

 

IE Developer toolbar

 

תלחצו על החץ שמסומן באדום ותבחרו בכוכבית שמופיעה ליד תיבת הטקסט – כעת ה – tool bar יציג בצד שמאל את האלמנט הנבחר (הכוכבבית) ובצד ימין את כל הפרטים שלו.

תבחרו בטאב Attributes ותראו את כל המאפיינים

 

החלק השמאלי של ה – toolbar:

 

tool bar left

 

החלק הימני

 

 

tool  bar right

 

 

אחרי שבחרתם ב – attributes, תבחרו באלמנט שמסומן באדום ותלחצו על ה – X כדי למחוק אותו.

 

מה שזה יעשה – זה ימחק את הקריאה לפונקציית ה – JavsScript שבודקת האם יש ערך בתיבת הטקסט ותתבצע ריצה לשרת.

אמנם כשנחזור מהשרת נגלה שוב את הכוכבית מכיון שהבדיקה התבצעה גם בצד השרת – אבל היות שלא התייחסו לבדיקה – הקוד שלנו יתבצע ונראה את השעה.

 

not valid

 

 

היות שאחנו יודעים שהבדיקה מתבצעת בצד השרת – הדבר היחיד שצריך לעשות זה לשאול IsValid לפני הקוד שלנו

 

protected void btn_click(object sender, EventArgs e)

{

if (IsValid)

{

Response.Write(DateTime.Now.ToLongTimeString());

}


}


 

הערך של IsVAlid יהיה true רק עם כל ה – validators עברו בהצלחה.

 

אפשר להשתמש במאפיין הזה אחרי ה – Page_Load – כלומר בכל האירועים של הפקדים, אם נרצה להשתמש בו גם ב – Page_Load (או קודם) אנחנו צריכים לקרוא לפונקציית Validate לפני השימוש ב – IsValid.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

תגובה אחת

  1. Yaniv6 בינואר 2010 ב 0:07

    מעולה! תודה רבה!
    שהשנה הלועזית החדשה תהיה מלאת פוסטים שלמה 🙂

    הגב