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

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

bimbim 15-05-13 11:36

הצפת משתנה בphp
 
היי,
בעקבות מגבלות של הסקריפט, אני חייב לשמור שם משתמש וסיסמא לא מוצפנים כדי להשתמש בהם לפונקציה. זה יוצר לי בעיות אבטחה פוטנציאליות רציניות.
איפה הכי "בטוח" לשמור את המידע הזה? בקובץ נפרד? במסד? או בפונקציה עצמה כמשתנה?

בנוסף חשבתי שאם כבר לשמור אז לשמור בפונקצית הצפנה דו כיוונית כך שאני אפנח אותם רק בפונקציה שאני נדרש להשתמש בה. איך אפשר לעשות דבר כזה בPHP ?

תודה רבה

Ori The Man 15-05-13 11:45

למה אתה חייב לשמור אותם גלויים?

bimbim 15-05-13 12:08

ציטוט:

נכתב במקור על ידי Ori The Man (פרסם 876269)
למה אתה חייב לשמור אותם גלויים?

כי אני חייב לשלוח אותם בpost לטופס אחר והפרטים חייבים להיות גלויים בבקשה.

אדיר 15-05-13 12:16

למי שייכים שם המשתמש והסיסמא? מה אתה עושה איתם? למה אתה חייב להעביר אותם גלויים? למה אתה מעביר אותם בכלל?
תסביר מה אתה רוצה לעשות ולמה בחרת לעשות את זה בצורה הזו- יכול להיות שהדרך שבחרת לא נכונה.

bimbim 15-05-13 13:13

אני עובד עם api שמקבל בקשת post עם שם משתמש וסיסמא ומחזיר hashkey שנותן לי לעשות כל מיני דברים. אין לי ברירה אחרת מלבד לשלוח אותם ככה, אבל הייתי מעוניין "לצמצם" נזקים במקרה של פריצה ולהקשות על הפורץ לגלות את המשתמש והסיסמא.

Haimz 15-05-13 13:19

מתי אתה שולח את השם משתמש והסיסמה? איפה הם שמורים?
ברור שאל תשמור בקובץ, רק מסד

Ori The Man 15-05-13 13:24

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

IgalSt 15-05-13 13:27

אתה שולח אותם ב-POST מהדפדפן או מהשרת?
אם מדובר בדפדפן, אז זה רעיון נוראי. אם זה אכן מקרה, הייתי ממליץ בחום לממש שהמשלוח עצמו יתבצע בצד שרת, משהו שימזער את הנזק משמעותית. אם זה אפשרי, אז שהמשלוח יהיה ב-SSL שלא ניתן יהיה לנטר את התקשורת מהשרת ולמצא את המידע הזה.

בכל מקרה, לדעתי אתה אמור לשמור את המידע הזה בקוד שלך ולא ב-DB (ה-DB הרבה יותר "חשוף" ויותר קל לשלוף ממנו מידע מאשר לגרום לקוד צד שרת להדפיס תוכן של איזשהו משתנה שלא רצית להדפיס מלכתחילה).

בעצם הייתי עושה ככה:
1. שולף את הסיסמה המוצפנת מה-DB
2. מתרגם את הסיסמה המוצפנת לסיסמה האמיתית.
3. שולח ב-POST בצד שרת עם SSL את הסיסמה ל-API.
4. מאפס את ערך המשתנה

bimbim 15-05-13 13:44

השליחה היא בצד השרת (מהשרת) בעזרת curl. לא הצלחתי להבין מכם אם עדיף לשמור כמשתנה בphp או במסד.
וכיצד אוכל להצפין סיסמא? באיזה פונקציה בphp להשתמש?
אף פעם לא הצפנתי בסיסמא דו כיוונית ולכן אין לי מושג איך לעשות.

אדיר 15-05-13 15:07

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

למען העמימות הייתי אפילו מפצל את המידע - את שם המשתמש והסיסמא המוצפנים הייתי שומר בקובץ עצמו ואת המפתח הייתי שומר ב- DB או משהו כזה.
מי שיצליח לשלוף את המפתח ממסד-הנתונים לא ישיג יותר מדי, מי שישיג גישה לקוד יוכל גם מן הסתם להתחבר ל- DB ולשלוף משם את המפתח, אבל זה בהחלט יכול להקשות על חובבנים וזה לא יהיה מובן מאליו (שלזה אתה צריך לדאוג ברמת הקוד).

לדוג': http://stackoverflow.com/questions/1...ryption-in-php

להגיד לך שזה בטוח? זה לא.
אבל זה בטח טוב יותר מאשר לשמור את זה כ- plain text.

IgalSt 15-05-13 21:52

ציטוט:

נכתב במקור על ידי אדיר (פרסם 876288)
להגיד לך שזה בטוח? זה לא.
אבל זה בטח טוב יותר מאשר לשמור את זה כ- plain text.

לפי מה שאני מבין הבעיה היא לא בשמירה של המידע (שאני מניח שהשמירה שלו מאובטחת) אלא שליחתו ל-API חיצוני שלא יכולה להעשות בצורה אחרת פרט ל-POST עם סיסמה חשופה.

אדיר 15-05-13 22:10

המידע מאובטח עד שמישהו מוכיח אחרת :).

אני מניח שהבעיה יכולה להתקיים ב- 2 הצדדים:
אתה אף פעם לא יכול לדעת מי חוץ ממך עוד רואה את הקבצים או השיג גישה למסד הנתונים - ההצפנה הזו מכסה (לא בדיוק, אבל נגיד) מקרים של חדירה למסד הנתונים, קבצי האתר ומערכת הקבצים בשרת.
וכן אי אפשר גם להבטיח שאף אחד לא מאזין למידע שנכנס ויוצא מהשרת - ככה שבמקרים מסויימים שבהם זה כדאי (כמו כאן) רצוי לשלב SSL אם יש תמיכה בכך מצד ספק השירות.

אבל בעניין ה- API עצמו זה כבר ליקוי בשירות שהוא עובד מולו (בהנחה וככה באמת עושים את זה).
השירות צריך לספק איזשהו secret key לכל משתמש שבאמצעותו הוא מזהה אותו, הלקוח לא אמור להתממשק לשירות עם שם המשתמש והסיסמא שלו.


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

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