הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   התחברות לאתר? (https://hosts.co.il/forums/showthread.php?t=93073)

trupix 28-10-11 12:38

התחברות לאתר?
 
הי,

יש לי טופס התחברות, לצורך הענין נקרא לו login.php

בטופס ישנם השדות שם משתמש + סיסמא בלבד.

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

יש את set cookie אבל אני קצת מסתבך עם זה.

כמו כן רציתי לדעת איך לSeasion_start יש קשר לכל הסיפור


תודה לעוזרים!
שב"ש|קורץ|

Liorl 28-10-11 13:06

אז זה הולך ככה ..
אחרי שהמשתמש עבר את הזיהוי

אתה מייצר לו סיישן ככה :

PHP קוד:

$_SESSION["name"] = $_POST["user"]; 

עכשיו פתחנו סיישן שקוראים לו "name" והערך שלו שווה ל "
קוד:

$_POST["user"]
"

אם אתה רוצה לבדוק האם המשתמש התחבר תעשה ככה :
PHP קוד:

if($_SESSION["name"]){
/* Code if The user Login */
} else {
 
/* Code If The User Dont Login */


מקווה שהבנתה :)

trupix 28-10-11 13:13

הי ליאור! קודם כל תודה. :)

לדעתך מאובטח יותר להשתמש בסשן מאשר קוקיז?

Liorl 28-10-11 13:14

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

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

trupix 28-10-11 13:21

ובהנחה שהמשתמש יצא מהאתר ונכנס אחרי יומיים(מאותו מחשב+דפדפן) - > איך המערכת תזהה אותו? הרי אין לו כלום על המחשב שמעיד על כך (=קוקיז)

אני מקווה שזה לא עפ"י כתובת IP מאחר וזה לא כל כך טוב עבורי.

אדיר 28-10-11 13:23

שימוש במערכת הסיישנים המובנית ב- PHP לא עונה על התנאי של פותח האשכול: "איך ניתן לזכור אותו בכניסות הבאות שלו לאתר".

המידע הקיים בסיישן תקף כל עוד הגולש לא סגר את הדפדפן/ איפס את הסיישן,
ברגע שהגולש יסגור את הדפדפן ויפתח אותו מחדש הוא יקבל מזהה אחר והמערכת כבר לא תקשר אותו למידע מהסיישן הקודם שלו.

תלמד להשתמש בעוגיות, זה ידע בסיסי.

trupix 28-10-11 13:33

על פי כך אשתמש בקוקיז.

קוד:

set_cookie("cookie_login","admin");
האם הסינטקס נכון? כיצד ניתן לאבטח אותו ככל האפשר? כי לפחות בתיאוריה, ניתן בקלות 'להערים' על המערכת תוך כדי יצירת עוגייה זהה עם המשתמש שאבחר

תודה חברה.

Erez | TrustMedia.co.il 28-10-11 15:28

ציטוט:

נכתב במקור על ידי trupix (פרסם 823343)
על פי כך אשתמש בקוקיז.

קוד:

set_cookie("cookie_login","admin");
האם הסינטקס נכון? כיצד ניתן לאבטח אותו ככל האפשר? כי לפחות בתיאוריה, ניתן בקלות 'להערים' על המערכת תוך כדי יצירת עוגייה זהה עם המשתמש שאבחר

תודה חברה.

בעוגייה תשמור את הmd5 של הסיסמא, או איזה מזהה ייחודי של ההתחברות.
בקיצור משהו שלא יהיה אפשר לגלות בקלות ולשנות את העוגיה ולפרוץ למשתמש

Haimz 28-10-11 17:32

כדי להתחיל SESSION אתה רושם
PHP קוד:

session_start(); 

מטעמי אבטחה, תעשה ככה:
PHP קוד:

session_start();
ini_set "session.cookie_httponly" true ); 

אסור שיהיה HTML לפני תחילת הקוד (זה כולל גם רווחים וכל דבר קטן שמודפס למסך)

כדי להכניס סשן אתה עושה

PHP קוד:

$_SESSION['name'] = 'value'

כמו ששמת לב המשתנה $_SESSION הוא מערך, ודרכו את גם קורא פרטים, בהצלחה

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

daNN 28-10-11 17:49

ציטוט:

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

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

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

זיוף Sessions אפשרי בדיוק באותה רמה של זיוף Cookies.

אז איך כן תעשה את זה ?
- תיצור כפתור CheckBox של "זכור אותי" לדעת אם לשמור את העוגייה במחשב (אולי המשתמש לא משתמש הרגע במחשב שלו?)
- בדוק עם המסד נתונים אם המשתמש קיים והסיסמא תקינה במקרה אם כן המשך הלאה.
- תגדיר Session במקרה שלא השתמש באופציה "זכור אותי"
- במקרה שכן השתמש באופציה "זכור אותי" תגדיר עוגייה
- בנוסף את הסיסמא תדאג להצפין באחת מההצפנות המוצעות בPHP לדוגמא: md5, sha1, crc32.

נקודות חשובות:
שים לב לא להגדיר בצורה הבאה (כמו שהראו לך למעלה):
קוד:

$username = $_POST["user"]
מן הסתם לפני שאתה מגדיר Cookies או Sessions
אתה בודק עם המסד נתונים אם המשתמש קיים והסיסמא שהוזנה נכונה.
במקרה של שימוש בצורה הזאת אתה חושף את המסד נתונים שלך להזרקות SQL.
על מנת לקרוא עוד על הזרקות SQL:
http://www.unixwiz.net/techtips/sql-injection.html

אז מה כן אפשר לעשות?
השתמש בפונקציה mysql_real_escape_string !
קוד:

$username = mysql_real_escape_string($_POST['user'])


כל הזמנים הם GMT +2. הזמן כעת הוא 20:31.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ