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

שלמה גולדברג (הרב דוטנט)

מרצה בסלע ויועץ בעולם ה - net.

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

 

 (זהו פוסט ה - 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.
שלח תגובה

(שדה חובה)  

(שדה חובה)  

(אופציונלי)

(שדה חובה) 

Please add 3 and 4 and type the answer here:


Enter the numbers above: