פורסם 2014 באפריל 2411 שנים לאחרונה התחלתי לעשות פרויקט משל עצמי, רק בשביל לצבור נסיון , מאחר ואין לי איזה מדריך הייתי רוצה לדעת אם אני עושה הכל לפי המקובל, אז אני ארשום דברים שעשיתי ואתם תעבירו ביקורת האם זאת הדרך המקובלת בתעשיה.. 1. אז נתחיל עם sql server, יצרתי DB שמכיל מספר טבלאות עם קשרים בניהם.. 2. יצרתי דף login שמרכיב סיסמה ואימל... שלמעשה ברגע לחיצת לחצן הלוגין הוא בעצם ניגש לDB בודק את הסיסמה והאימל ובהתאם להרשאה שלו אני שולח אותו לדף מסויים זה הקוד : protected void Page_Load(object sender, EventArgs e) { if (Request.HttpMethod == "POST") { _IsValid = false; SqlConnection _conn = new SqlConnection("Data Source=WINDOWS-PC;Initial Catalog=Db_CrmWrk;Integrated Security=True"); string _email = Request.Form["Email"]; string _pass = Request.Form["Pass"]; SqlCommand _cmd = _conn.CreateCommand(); _cmd.CommandText = @"SELECT * FROM [dbo].[Employees] employees INNER JOIN [Db_CrmWrk].[dbo].[Persons] person ON employees.IDNumber=person.IDNumber WHERE [Password]=@password and person.EmailAdress=@email"; _cmd.Parameters.Add("@password", SqlDbType.VarChar, 100); _cmd.Parameters.Add("@email", SqlDbType.VarChar, 50); _cmd.Parameters["@password"].Value = _pass; _cmd.Parameters["@email"].Value = _email; _conn.Open(); SqlDataReader _reader = _cmd.ExecuteReader(); if (_reader.HasRows) { while (_reader.Read()) { _idNumber = _reader["IDNumber"].ToString(); _Permission = _reader["Permission"].ToString(); } _IsValid = true; } _conn.Close(); switch (_Permission) { case "owner": { str = string.Format("OwnerPage.aspx?&idNumber={0}&Email={1}", _idNumber, _email); if (_IsValid) Response.Redirect(str); break; } case "CEO": { str = string.Format("Home.aspx?&idNumber={0}&Email={1}", _idNumber, _email); if (_IsValid) Response.Redirect(str); break; } case "sales": { str = string.Format("Sales.aspx?&idNumber={0}&Email={1}", _idNumber, _email); if (_IsValid) Response.Redirect(str); break; } } } האם הדרך הזאת מקובלת? כאשר המשתמש נמצא אני מעביר אותו לדף שהוא מורשה ואני שולח לאותו דף את האימל והמספר תעודת זהות, וזאת בשביל לשלוף בדף הבא נתונים מהDB ניראה לי שהדרך בסדר אבל הייתי רוצה לדעת אם זה הדרך שמקובל, שלא אגיע למקום ויגידו לי מה זה השטויות האלה מקובל שעושים א ב ג
פורסם 2014 במאי 511 שנים שלום רב,בדר"כ לא מומלץ להעביר נתונים ישירות ל SQL בצורה הזו, אלה דרך משתנים שעברו VALIDATION.הרעיון הוא ל"החביא" את השאילתא כדי שלא יוכלו להכניס לך קוד זדוני ולקבל מידע.אם אתה עובד ב .NET, יש לך מערכת מובנית של מיקרוסופט עם אימות וניהול משתמשים.
פורסם 2014 במאי 511 שנים הוא משתמש פה בפרמטרים, לא מכניס את הנתונים ישירות ל-SQL. אין פה בעיה של sql injection.
פורסם 2014 במאי 611 שנים מחבר אני לא הכי אוהב להשתמש בדברים המובנים של asp.net כי הם ניראה לי לפעמים יותר מידיי מסורבלים...שאילתות אני מעביר דרך פרמטרים כמו שהמליצו לי, ולגבי ולידציות אני עושה אותן דרך JS ניראה לי הכי טובלא?
פורסם 2014 במאי 611 שנים לא, כי אפשר לעקוף אותן.ולידציה מהסוג הזה בקליאנט מיועדת יותר ל- UX מאשר ל- Security בהרבה מקרים. אתה לא יכול להסתמך עליה, המשתמש תמיד יכול לעקוף אותה.
פורסם 2014 במאי 711 שנים מחבר הבעיה שהדברים המוכנים למשל מערכת מובנית של מיקרוסופט עם אימות וניהול משתמשים.סבבה והכל אבל היא בנויה בצורה מסויימת, היא לא גמישה לצורה שאני רוצה להציג אותה...- - - תגובה אוחדה: - - -ומה זה UX?
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.