![]() |
הצפת משתנה בphp
היי,
בעקבות מגבלות של הסקריפט, אני חייב לשמור שם משתמש וסיסמא לא מוצפנים כדי להשתמש בהם לפונקציה. זה יוצר לי בעיות אבטחה פוטנציאליות רציניות. איפה הכי "בטוח" לשמור את המידע הזה? בקובץ נפרד? במסד? או בפונקציה עצמה כמשתנה? בנוסף חשבתי שאם כבר לשמור אז לשמור בפונקצית הצפנה דו כיוונית כך שאני אפנח אותם רק בפונקציה שאני נדרש להשתמש בה. איך אפשר לעשות דבר כזה בPHP ? תודה רבה |
למה אתה חייב לשמור אותם גלויים?
|
ציטוט:
|
למי שייכים שם המשתמש והסיסמא? מה אתה עושה איתם? למה אתה חייב להעביר אותם גלויים? למה אתה מעביר אותם בכלל?
תסביר מה אתה רוצה לעשות ולמה בחרת לעשות את זה בצורה הזו- יכול להיות שהדרך שבחרת לא נכונה. |
אני עובד עם api שמקבל בקשת post עם שם משתמש וסיסמא ומחזיר hashkey שנותן לי לעשות כל מיני דברים. אין לי ברירה אחרת מלבד לשלוח אותם ככה, אבל הייתי מעוניין "לצמצם" נזקים במקרה של פריצה ולהקשות על הפורץ לגלות את המשתמש והסיסמא.
|
מתי אתה שולח את השם משתמש והסיסמה? איפה הם שמורים?
ברור שאל תשמור בקובץ, רק מסד |
אפשר קצת יותר פרטים? api של מה?
כי לרוב שומרים סיסמה מוצפנת במסד, כאשר מזינים משתמש וסיסמה מצפינים את הסיסמה שהתקבלה ומשווים בינהן |
אתה שולח אותם ב-POST מהדפדפן או מהשרת?
אם מדובר בדפדפן, אז זה רעיון נוראי. אם זה אכן מקרה, הייתי ממליץ בחום לממש שהמשלוח עצמו יתבצע בצד שרת, משהו שימזער את הנזק משמעותית. אם זה אפשרי, אז שהמשלוח יהיה ב-SSL שלא ניתן יהיה לנטר את התקשורת מהשרת ולמצא את המידע הזה. בכל מקרה, לדעתי אתה אמור לשמור את המידע הזה בקוד שלך ולא ב-DB (ה-DB הרבה יותר "חשוף" ויותר קל לשלוף ממנו מידע מאשר לגרום לקוד צד שרת להדפיס תוכן של איזשהו משתנה שלא רצית להדפיס מלכתחילה). בעצם הייתי עושה ככה: 1. שולף את הסיסמה המוצפנת מה-DB 2. מתרגם את הסיסמה המוצפנת לסיסמה האמיתית. 3. שולח ב-POST בצד שרת עם SSL את הסיסמה ל-API. 4. מאפס את ערך המשתנה |
השליחה היא בצד השרת (מהשרת) בעזרת curl. לא הצלחתי להבין מכם אם עדיף לשמור כמשתנה בphp או במסד.
וכיצד אוכל להצפין סיסמא? באיזה פונקציה בphp להשתמש? אף פעם לא הצפנתי בסיסמא דו כיוונית ולכן אין לי מושג איך לעשות. |
תשתמש באלגוריתם שמצפין מחרוזת באמצעות מפתח כלשהו ואז יכול גם לפענח אותה באמצעות אותו המפתח (או מפתח אחר, לא קריטי).
למען העמימות הייתי אפילו מפצל את המידע - את שם המשתמש והסיסמא המוצפנים הייתי שומר בקובץ עצמו ואת המפתח הייתי שומר ב- DB או משהו כזה. מי שיצליח לשלוף את המפתח ממסד-הנתונים לא ישיג יותר מדי, מי שישיג גישה לקוד יוכל גם מן הסתם להתחבר ל- DB ולשלוף משם את המפתח, אבל זה בהחלט יכול להקשות על חובבנים וזה לא יהיה מובן מאליו (שלזה אתה צריך לדאוג ברמת הקוד). לדוג': http://stackoverflow.com/questions/1...ryption-in-php להגיד לך שזה בטוח? זה לא. אבל זה בטח טוב יותר מאשר לשמור את זה כ- plain text. |
ציטוט:
|
המידע מאובטח עד שמישהו מוכיח אחרת :).
אני מניח שהבעיה יכולה להתקיים ב- 2 הצדדים: אתה אף פעם לא יכול לדעת מי חוץ ממך עוד רואה את הקבצים או השיג גישה למסד הנתונים - ההצפנה הזו מכסה (לא בדיוק, אבל נגיד) מקרים של חדירה למסד הנתונים, קבצי האתר ומערכת הקבצים בשרת. וכן אי אפשר גם להבטיח שאף אחד לא מאזין למידע שנכנס ויוצא מהשרת - ככה שבמקרים מסויימים שבהם זה כדאי (כמו כאן) רצוי לשלב SSL אם יש תמיכה בכך מצד ספק השירות. אבל בעניין ה- API עצמו זה כבר ליקוי בשירות שהוא עובד מולו (בהנחה וככה באמת עושים את זה). השירות צריך לספק איזשהו secret key לכל משתמש שבאמצעותו הוא מזהה אותו, הלקוח לא אמור להתממשק לשירות עם שם המשתמש והסיסמא שלו. |
כל הזמנים הם GMT +2. הזמן כעת הוא 14:40. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ