עבור לתוכן

דיון לגבי הצגת מידע מDB בדף aspx

Featured Replies

פורסם

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

אז אני ארשום דברים שעשיתי ואתם תעבירו ביקורת האם זאת הדרך המקובלת בתעשיה..

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

ניראה לי שהדרך בסדר אבל הייתי רוצה לדעת אם זה הדרך שמקובל, שלא אגיע למקום ויגידו לי מה זה השטויות האלה

מקובל שעושים א ב ג

:)

  • 2 שבועות מאוחר יותר...
פורסם

שלום רב,

בדר"כ לא מומלץ להעביר נתונים ישירות ל SQL בצורה הזו, אלה דרך משתנים שעברו VALIDATION.

הרעיון הוא ל"החביא" את השאילתא כדי שלא יוכלו להכניס לך קוד זדוני ולקבל מידע.

אם אתה עובד ב .NET, יש לך מערכת מובנית של מיקרוסופט עם אימות וניהול משתמשים.

פורסם

הוא משתמש פה בפרמטרים, לא מכניס את הנתונים ישירות ל-SQL. אין פה בעיה של sql injection.

פורסם
  • מחבר

אני לא הכי אוהב להשתמש בדברים המובנים של asp.net כי הם ניראה לי לפעמים יותר מידיי מסורבלים...

שאילתות אני מעביר דרך פרמטרים כמו שהמליצו לי, ולגבי ולידציות אני עושה אותן דרך JS ניראה לי הכי טוב

לא?

פורסם

לא, כי אפשר לעקוף אותן.

ולידציה מהסוג הזה בקליאנט מיועדת יותר ל- UX מאשר ל- Security בהרבה מקרים. אתה לא יכול להסתמך עליה, המשתמש תמיד יכול לעקוף אותה.

פורסם
  • מחבר

הבעיה שהדברים המוכנים למשל

מערכת מובנית של מיקרוסופט עם אימות וניהול משתמשים.

סבבה והכל אבל היא בנויה בצורה מסויימת, היא לא גמישה לצורה שאני רוצה להציג אותה...

- - - תגובה אוחדה: - - -

ומה זה UX?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים