![]() |
אבטחה של מערכת תוכן
היי חברים, רציתי לדעת אילו "אבטחות" אני צריך לאבטח את מערכת התוכן שאני בונה כדי שתהיה מאובטחת יחסית.
לפיכך, דבר ראשון - חסימה של תווי HTML וכן הלאה מתיבות טקסט, דבר שני - סיסמאות מוצפנות ואבטחה של GET באיזורים כמו "שחזור סיסמה". אשמח לשמוע על עוד. תודה ויום טוב. |
להצפין סיסמאות של משתמשים (במידה ומדובר על משתמשים שכלולים באתר)...
|
למנוע התקפות SQL...
להגביל את המשתמש בנתונים מסויימים... לבדוק כל צעד של המשתמש שהוא לא חריג במקרה...וכו'.. |
לבדוק שאין חור אבטחה ששולחים לך POST מדף במחשב.
|
htmlspecialchars
mysql_real_escape_string ואם התוכן שאמור להכנס לעמוד לדוגמא page?id=5 אז לבדוק ש ID הוא באמת מספר בעזרת is_numeric ממ זה בעיקרון מה שאני ושה |
קצת חשיבה הגיונית, ותקבל מערכת מאובטחת היטב, בכל מקום אשר אתה רואה שלמשתמש יש אפשרות להציב קלט כלשהו, בין אם זה תיבת טקסט, כתובת, וכו', זה מה שעליך לאבטח, אבל כמובן שבמידה ואת משתמש גם בעוגיות, הרי כל בן אדם עם טיפת ידע יכול לשנות את העוגייה בקלות מן מחשבו האישי, ולדוגמא להחליף משתמש באתר, בגלל זה עליך להציב לדוגמא שני עוגיות, אחת שתכיל את הסיסמא, השנייה את שם המשתמש, ואז לבצע התאמה בינהם בPHP.
פונקציות שימושיות: http://php.net/mysql_real_escape_string http://php.net/htmlspecialchars http://php.net/stripslashes בהצלחה :] |
מה סלאשים יכולים לעשות? :\
|
כל מה שצריך זה למנוע XSS, יש פונקציה בשם htmlspecialchars =]
|
ציטוט:
אין שום סיבה לשמור 2 עוגיות, אחת למס' \ שם משתמש והשנייה לסיסמה אני אישית לא שומר שום דבר שקשור לסיסמה (גם אחרי 5 הצפנות) בקוקי, תאמין לי שכל הצפנה אפשר לשבור (אם זה MD5, SHA1, וכו'). |
ציטוט:
|
דרושים המון משאבים כדי לפענח את MD5, ואם תצפין אותה 5 פעמים, אתה תקשה עוד ועוד. ואנשים יתעייפו מלנסות לפענח, ולפענח ולפענח.
|
ציטוט:
וזה לא משנה כמה הצפנה על הצפנה תעשה. MD5 זה גיבוב. לא הצפנה (אפילו אין מפתח). הרי יכול להיות שהגיבוב של "12345" והגיבוב של "elad" הוא אותו אחד בדיוק.. אז מה שעושים זה פשוט מריצים את המחרוזת שלקחתי מהעוגייה בגוגל ומקבלים איזשהו פלט שיכול להתאים.. |
ציטוט:
אם למשל אתה משתמש בקוד שמסמל בעבורך משהו - מספר טלפון, תאריך לידה ומספרים שלא כולם משתמשים בהם, הסיכוי שאיזה מנוע של האשים יכיל את הסיסמא המוצפנת והלא מוצפנת הוא סיכוי של 1 למיליון לדעתי. |
ציטוט:
אם תהיה לנו עוגיה אחת שמכילה שם משתמש, כל אחד יכול לשנות את השם משתמש ל- Admin, והנה המערכת נפרצה ב.. חצי דקה? אבל.. אם יש לנו עוגיה אחת משתמש ועוגיה אחת סיסמא, ומן הסתם בודקים אם השם משתמש והסיסמא נכונים, הפורץ צריך לדעת את הסיסמא בשביל לפרוץ. הבעיה היחידה פה, היא, שיש חור ל- Brute Force, ואת זה אי-אפשר לחסום, בניגוד ל- LOGIN רגיל. לכן, הנה מה שאני עושה: במסד נתונים, טבלה בשם SESSIONS ושם יש ID מוצפן של SESSION, וסיסמא ל- SESSION ושם משתמש של המשתמש וסיסמא של המשתמש, ואז בעוגיה יש רק ID מוצפן של SESSION וסיסמא של SESSION והמידע על העוגיה, בכלל לא רלוונטי (אפשר לגנוב עוגיות, אבל את זה אפשר לחסום ע"י הגבלת IP של SESSION) ואז בכלל אפשר לשלב את זה עם סטטיסטיקה וכו'.. |
במשתמשים אני פשוט יוצר עוגייה ובודק אם היא קיימת, וזה נראה לי לא כ"כ מאובטח, כיצד אפשר לאבטח את זה?
חוץ מזה, אין לי בעיה. |
יוצרים עוגייה, שמכילה את ה- ID של המשתמש, ומצד שני עוגייה שמכילה את הסיסמא של המשתמש מוצפנת.
אתה פשוט בודק באמצעות שיאלתה אם העוגיות עצמן תקינות. אם הם לא, אז פשוט תמחק לו אותן :)... קוד:
$query = mysql_query("SELECT * FROM `members` WHERE `id` ='" . $_COOKIE["id"] . "' AND `password` ='" . $_COOKIE["password"] . "'"); |
ציטוט:
בעוגיה אחת אי אפשר להכניס 2 פרמטרים לבדיקה? אי אפשר להכניס 3 ו 4 פרמטרים? אפשר להכניס גם מיליון פרמטרים עד ההגבלה של 4KB לעוגייה. תאמין לי שלא פשוט להגיע לזה.. בקיצור: מיותר ובזבזני לכתוב שתי עוגיות. מספיק גם עוגייה אחת שבה אפשר להכניס גם פרמטרים שרק תרצה (שם משתמש, סיסמא, מחרוזת רנדומאלית, SID, תאריך לידה, כתובת מגורים וגם איך קוראים לאחותו ומתי פעם אחרונה שכבה). ציטוט:
|
דקה, אז מה כדאי לעשות?
ליצור עוגייה אחת שמה היא מכילה סיסמה ושם משתמש? ואז לעשות אימות העוגייה עם הסיסמה ושם המשתמש? ואיך אני מכניס שני ערכים לעוגייה אחת? תודה. |
עוגיה 1: Username
עוגיה 2: Password (md5 hash) ובודק עם שיאלתה שנתתי לך למעלה כבר... |
ציטוט:
|
הוא התכוון שאתה יכול להכניס את הנתונים של שני הנתונים לעוגייה אחת ולשים סימן מפריד בין שני הנתונים, כך לפחות אני אני משתמש ברוב האתרים שאני בונה שיש בהם משתמשים, התגובה שלי לפני הייתה קצת מביכה |Rolleyes|
|
ציטוט:
|
ציטוט:
אחוזי collision של MD5 הם אפסיים, ועד היום לא הצליחו ליצור משהו שייצר לך מחרוזת שמחזירה את אותו checksum מה שיש זה רק rainbow tables ולא לכל ילד יש כאלה, וזה עוד רק אחרי שנכנסים לך לDB ולוקחים את זה.. MD5 מספיק ביותר. |
ציטוט:
הסיכוי לפרוץ את זה עם RAINBOW TABLES יותר גבוה, והפריצה אפשרית עם בדיקה ברוטלית פשוטה של CAIN. |
כל הזמנים הם GMT +2. הזמן כעת הוא 08:47. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ