![]() |
PHP | אבטחה.
** אני יודע שכבר נתתי אשכול לפני כמה חודשים בנושא, אבל עכשיו שאני יודע יותר מאז הייתי רוצה לפתוח שנית. **
ככה אני בונה מערכת CMS והיא לא מאובטחת בכלל.... אז החלטתי לאבטח אותה...;) עברתי על מדריכים באינטרנט ומה שאמרתם לי אז(שלא הבנתי מילה וחצי..) והגעתי לכך - יש לאבטח GET - (במקרה שלי הוא רק מס') ע"י שימוש בintval במקרה והוא טקסט אז לעשות עם באס במידה וגט = X אז אינקלוד X(לא היה לי כח לרשום..חח) הגנה מפני זריקות SQL ו- JS - לגבי SQL זה mysql_escape_string() . השאלה היא איפה אני שם אותה?בהתחברות?בהצגה?? לגבי JS לא מצאתי כלום לגבי זה...ממש כלום...יש פונקציה או משהו כזה? הגנה מפני קוד HTML(לא היה לי שם אחר..) - htmlspecialchars זהו? הגנה מפני זריקות XSS - לא מצאתי כלום לגבי זה....רק עם העלאת תמונות..(במערכת העלאת תמונות יש לבדוק שזה באמת תמונה ולא טקסט..) חסימת בוטים זדוניים, מנגנון נגד הצפנות ופינגים - כלום, כלום, כלום..(תאמתלא ידעתי מה לחפש ניסתי כל מיני אפשרויות ולא הוציא לי כלום...) יש מצב שאתם עוזרים לי? (לסיכום השאלות - לגבי ה-SQL|HTML|GET - מספיקה האבטחה שעשיתי? לגבי JS|XSS|בוטים|פינגים|הצפנות - איך אני מאבטח?יש פונקציה?) תודה רבה.. (אין צורך להביא קוד...רק פונקציה או תיאור כללי..) אביחי |
תראה לגבי האבטחה הראשונית, לא הבנתי מה אמרת שאם זה דף..
במקרה שזה דף אז אמורה להיות לך רשימה של דפים ואז אתה מחפש את הדף שם ואם הוא לא קיים אז תעשה משהו.. בקשר לדברים האחרים. איך לא מצאת? XSS: http://sandsprite.com/Sleuth/papers/...rld_XSS_2.html Brute Force: http://www.webhostgear.com/240.html בקשר לבוטים אתה יכול לעשות תמונת אבטחה-שצריך להקליד את המספרים שבתמונה.. ובקשר לjavascript. תחשוב בהיגיון-מה javascript יכול לעשות? נגיד יש לך input type="hidden" והvalue שם זה נגיד id של משהו או סיסמה או לא יודע מה. מישהו רואה את זה בקוד מקור ופשוט משנה עם פונקציית Javascript פשוטה. תחסום דברים כאלה. |
אבטחה זה דבר פשוט.
כל קלט שאתה מקבל, תוודא שזה בדיוק מה שצריך. |
"הגנה מפני זריקות SQL ו- JS - לגבי SQL זה mysql_escape_string()"
ציטוט:
|
דניאל - אני יודע את זה..שאלתי אם יש עוד משהו..
mlnn - חח אבל איך עושים את זה? ליאור תודה... לגבי הXSS איפה שותלים את זה...אפשר גם בושרת הכתובות? מה זה - Brute Force ? באנגלית brute זה חייה, פרא..מה הקשר?כאילו מה הביטוי לגבי JS ואיך אני חוסם את זה?אין פונקציה שתעזור לי? תודה רבה.. לשאר הדברים? |
ציטוט:
כוח ברוטולי יבדוק את כל הסיסמאות מ 0000 עד 9999 למשל (אתה בוחר את הסיסמאות) שיטת פריצה "טיפשה". |
אוקי, תודה הבנתי..
אני לא רוצה לסטות מהנושא אבל במדריך שהובא נכתב שהוא מתאר פריצות נגד FTP וכמעט ולא נוגע במערכות ווב... אז זה לא הכי רלוונטי..נכון? |
פשוט תבדוק, אם מישהו מתחבר יותר מ-5 פעמים וטועה, אז זה חוסם את ה-IP לרבע שעה.
|
דניאל תודה..כן חשבתי על זה אבל-
איך אני עושה את זה?(לגבי ההתחברויות)מלבד שימוש במסד..(או קוקיז..).. מה לגבי שאר הדברים? תודה מראש. |
אוקי אז ככה.
XSS: זה בדרך כלל בתיבות חיפוש, שלאחר מכן אתה מציג: "תוצאות עבור X" כשX זאת המילה שחיפשת. עכשיו אם לא תוודא שהכניסו רק טקסט יוכלו להכניס גם תגי HTML ובסופו של דבר יכולו לעבוד על משתמש אחר ולגנוב לו את העוגיה. הזרקות SQL: כל מידע שאתה מקבל ומבצע שאילתה, לדוגמא בחיפוש או כשאתה בודק אם העוגיה נכונה. אז תבדוק שכל הנתונים האלו הם רק מספרים או רק אותיות ומספרים, ובלי כל שאר הדברים. ככה לא יכולו לדפוק לך את השאילתה. ספאם: הכי טוב תיצור את התמונה הזאת עם האותיות, שצריך להכניס ביד מה שכתוב. וזהו. מישהו פה אמר משהו ברוט פורס, התמונה מגנה גם מזה.. [הרי צריך לראות את התמונה..]. פריצות FTP: תשתמש בסיסמה קשה, כל השאר זה כבר אחריות של בעל השרת לשכור מתחזקים ומאבטחים שישמרו על מערכת עדכנית. **העלאת קבצים: אם אתה מעלה רק תמונות, יש לך פוקנציה לא רעה exif_imagetype. אם זה שאר הקבצים, תבדוק קודם לפי סיומת. בכל מקרה, תיצור תקייה שאליה כל הקבצים יועלו, ובתקייה בעזרת htaccess תחסום קבצי PHP, כך שגם אם יצליחו לעלות קובץ PHP לא יצליחו להפעיל אותו. |
קודם תלמד לפרוץ שתדע את מה אתה הולך לאבטח אתה חושב שזה קל?(אלא אם כן אתה רוצה לאבטח רק דברים שלך שאתה יצרת ושאתה מכיר)
אחרי זה כנס לכאןhttp://phpsec.org אני לא מבין - קשה-לחפש-בגוגל?...... |
אוקי אני רוצה להבהיר משהו..
אני לא הולך ללמוד אבטחת אתרים כמקצוע.. אני רוצה לאבטח את המערכות שלי.. אני הולך ולומד ואני מסתובב קצת רואה אתרים של מאבטחים..וזה נראה לי מוזר שהכל בקובץ אחד שהוא ברירת מחדל לכולם... אבל עזבו את זה עכשיו.. תודה רבה MLNN הבאת חומר רב ושימושי.. אבל אני צריך להביא את זה לעשייה.. כמו בפרצות SQL רצוי הhtmlspecial ו - mysql_escape_string(שדרך אגב מה עושה?) ואיך אני מאבטח JS? תודה מראש. **הערה כמו שאמרתי בהודעה הראשונה שלי - אני כן חיפשתי בגוגל. הוא הביא לי מידע רב..ריכזתי כאן הכל ושאלתי אם זה מספיק, בנוסף אני שואל על דברים שאני לא מצאתי.. |
את כל הבדיקות תעשה עם ביטויים רגולריים. לי יותר נוח לעבוד עם הפוקנציה eregi.
|
עדיף preg_replace או בכלל לבנות פונקציה משלך שתסנן אותם או בXSS שלא תחשיב אותם כתגיות.
|
חגי אל תתנשא..כולנו יודעים כמה "טוב" אתה.
לפותח האשכול, לא הייתי מסתמך על מה שאנשים פה עונים לך,רוב המידע על אבטחת אפליקציות WEB הוא באנגלית, וככה תחפש: web applications security. אני אמליץ לך על כמה אתרים: http://shiflett.org http://jeremiahgrossman.blogspot.com/ XSS: יש כמה וכמה צורות של XSS. Cross-Site Request Forgeries על זה תוכל לקרוא פה: http://shiflett.org/articles/cross-s...uest-forgeries בגדול, זה לוודא שהטופס שלך, כל טופס, רץ מהשרת שלך, הפרמטרים שאתה מקבל - הם מהטופס שבשרת שלך. ואתה משיג את הבטחון הזה על ידי זה שאתה משתמש בסשן טוקנים, ואתה כבר תבין מה זה במאמר עצמו. וזה גם מענה טוב לכל המתכנתים התותחים שאומרים שאין צורך לאבטח את הפאנל בכלל. כי יש צורך, ויש צורך לוודא שמי שמנהל את המערכת הוא באמת המנהל ולא עושה נזק. מאותה סיבה, למה לעזעזל מיקרוסופט השקיעו בכל העניין של ההתרעות בויסטה? כל פעם שמנסים לבצע פעולה אדמיניסטרטיבית יש לנו הודעה מעצבנת. זה מאותה סיבה. מקווה שלפחות כמה מכם הבינו את הטעות. אבטחת אפליקציות אינטרנט זה מעבר לכמה פונקציות ושיטות התגוננות, זה תפיסה. תדמיינו שאתם רואים את הקוד שלכם ומבינים מה צריך לעשות כדי לאבטח אותו בלי שום מאמר בנושא. כל נתון שהתקבל מהגולש הוא זדוני עד שהמערכת שלכם תוכיח אחרת. וזאת על ידי הבדיקות שהמערכת אמורה לעשות. |
UDI אני לא מתנשא אבל אני גם לא ירד לרמה שלך,אנשים שמכירים אותי באמת יודעים כמה טוב אני.
תן לי לתקן אותך,אבטחת מידע זה ממש לא רק טפסים,לדוג' יש את הRFI שיכול לבוא בכתובת ולנצל שאילתות ולהוציא מידע וכו'. |
ציטוט:
ולנושא:אני בהחלט מסכים שהבטחת מידע זה לא רק טפסים אבל יש גם את השיטות פריצה דרך PL ז"א דרך חלון דוס כזה פעם מישהוא אמר לי שהוא פורץ דרך זה לפורומים שככתי מי זה חח |
ציטוט:
דבר שני, אני לא ראיתי בהודעה של Udi שום התנשאות או ירידה לרמות נמוכות, ההודעה שלו תקנית לחלוטין עפ"י כללי הנימוס. |
אודי, תודה רבה על המידע.
כשאתה אומר לאבטח את הפאנל למה הכוונה? את הטפסים שבפאנל?הרי זה ברור לא?או שלא הבנתי את כוונתך.. חגי ע"פ מה שאתה אומר צריך לאבטח את כל מה שקשור למשתמש(לא מנהל..) במידה ולמשתמש אין שום אפשרות להפתח את טפסי ההתחבורת וגט? בנוסף - כיצד אני מאבטח JS? האם הפונקציה שהבאתי לSQL HTML מספיקות? |
Udi צודק,
התנשאות לא מתאימה למתכנת/מאבטח או איך שלא תקראו לזה. ולפותח האשכול, בשביל לאבטח טוב יותר את המערכות שלך אתה צריך להתחיל לחשוב כמו מישהו שרוצה להזיק למערכת כלשהי, לצבור ידע בניסיונות הזרקה וכו' או לצבור לך צוות בטא טסטרים שיבדקו את המערכת מבחינת פירצות. |
לא התנשאתי אבל אם אתם חושבים ככה אני מבקש את סליחתכם זו לא הייתה כוונתי,
וכן יש המון שיטות לפריצה ואפשר גם לנצל SQL דרך PERL שזה כמו מה שאמרת חלון שפותחים בדוס ודרך שם מפעילים את הפקודה שמזריקה את השאילתה באותו אתר, כמו כן ASTeam, אכן צריך לאבטח גם את האתר ע"י mysql_real_escape_string HTMLSPECIALCHARS וכו' וגם חשוב לא לגרום לשגיאות למשל אם יש ?page=30 ועמוד 31 לא קיים אז שיבדוק שאם העמוד לא קיים שיעשה DIE אבל שלא יציג שגיאה, אלה דברים חשובים שאתה חייב לזכור. |
בנוסף לשאלה, כיצד לאבטח JS.
כעיקרון JS לא אמורים לאבטח (פרט למקרה של מגע עם שרת, כמו AJAX, וגם שם ההגנות בשרת בעיקר), בנוסף לזה, לא אמורים לסמוך על JS. הבעיה היא ש- JS רץ מהלקוח, אם יש הגנה ב- JS כלשהיא, הפורץ בקלות יכול לעקוף אותה, מהסיבה שהכל במחשב שלו, והכל בר שינוי. בדיקות טפסים ב- JS מבוצעות רק בשביל נוחיות (לא מהסוג שמחרבנים בה :) ) כל דבר בודקים שוב פעם בשרת, ושם נמצא בדרך כלל הבסיס של ההגנה. ב- AJAX, גם ההגנה מתבצעת בשרת, מה שכן לפעמים צריך עם JS לתאם כל מיני דברים עם המנגנון, ככה שגם ב- JS יש חלק מ- "מנגנון אבטחה" דבר שמעניין אותי: יש סיבה לשימוש ב- PERL או שזה סתם בשביל ה- "איזה מגניב אני, אני פורץ לאתר דרך דוס"? אם כן, מה הייתרון בשימוש ב- PERL? מה עושים עם PERL? (בשביל לפרוץ כמובן, אני יודע מה זה PERL למרות שאת השפה עצמה עוד לא) |
tnadav,
השימוש ב'PERL' הוא סך הכל על מנת לקצר את התהליך. במקום שתתחבר לX, תכתוב בפורם מסוים Y ותשלח. אתה רק לוחץ אנטר. אותו דבר אפשר לעשות בכל שפה אחרת. |
אוקי...
הבנתי לסיכום במצב שלי אין צורך לאבטח JS כי אני לא עושה בו שימוש כלל כמעט. אין צורך בXSS כי למשתמש הרגיל אין אפשרות הכנסת תוכן, למנהל יש(כגון הוספת דפים וכד') אבל אני מונע את זה בhtmlspecial.. בוטים\ספאם - שימוש בתמונה רנדומלית+ שימוש בסשיין ע"מ להשעות את המשתמש שעבר את הגבלת החמש ניסיונות. GET - במידה ויש רק id שימוש בinvtel(או איך שלא כותבים..) במידה וזה טקסט שימוש בספישלצ'ארס + שימוש בסוויצ' ואינקלוד. בSQL אני משתמש בmysql_escape_string(שד"א לא הבנתי בגרוש מה הוא עושה..) ראיתי בphpsec על זריקות sql האם הפונקציה הנ"ל מונעת את זה? מס' שאלות אחרונות - במידה ויש לי את האזור בו אני כותב טקסט שהוא התוכן(ע"י שימוש בWYSWYG) האם אי שימוש בספישל צ'ארס זה חור אבטחה? כי במידה ואני משתמש - הוא מציג לי כטקסט..איך לאבטח את זה? לגבי הSQL זה מספיק(משום מה נראה לי מעט..) תודה לעונים! ** אני חייב לומר תודה לכולם. אתם עונים לענינם ובזריזות. עזרתם לי מאוד. תודה.** |
אם אתה משתמש ב WYSIWYG (HTML) אז אתה לא צריך htmlspecialchars מאחר ואתה כן צריך להציג את הקודי HTML כמו שהם.
mysql_escape_string בסה"כ מוסיף \ לפני ' |
ציטוט:
וחגי... לא פעם ראשונה שאני שומע אותך אומר, RFI, FRI וכל השטויות האלה. אני מתכנת כבר 7 שנים ולא שמעתי פעם אחת את המושג\ביטוי\ראשי תיבות האלה... אז אולי תואיל בטובך לתרגם לנו ותת לנו משפט או שתיים על מה שזה אומר... סתם מעניין אותי לדעת מה זה באמת שאתה מדבר עליו כל כך הרבה... |
חגי, עפ"י גוגל RFI זה תחנת רדיו (אני חושב) צרפתית (RFI - Radio France Internationale), וכמה תוצאות אחרי זה Request for Information, אתה מוכן להסביר לכולנו מה הקשר?
|
הוא אמר לפני כמה אשכולות -
RFI(Request For Information) = שאילתה להשגת מידע(הזרקות למסד ולקבצים שנותנים מידע) LFI(Local File Inclusion) = ניצול קובץ מקומי(צפיה במידע,ניצול לרעה וכו') לגבי הסיכום - זה נכון? לגבי הmysql_escape_string במה זה כבר עוזר??? האא ואם חגי הולך לענות פה משהו יש לי עוד שאלה..חח איך כל המאבטחי אתרים צאבטחים אתר שלם בקובץ אחד? בלי שהם רואים את האתר??? |
ציטוט:
|
ציטוט:
אפשר לעשוות סקריפט "שמאבטח" GET ו POST ע"י לולאה על המשתנים, ככה לא צריך התערבות בסקריפט אלא רק הוספה של קובץ ב include. אבל זה בכלל לא עוזר וזה שטויות כמו שאמרת.. |
אי אפשר לאבטח אתר בלי לראות אותו ולגלות את הפירצות שבו,אין כזה דבר,
אבל לאבטח אתר בקובץ אחד - יש אפשרות בחלק מהמקרים מכיוון שזה גלובאלית מאבטח את המשתנים הסופרגלובאלים וכו'. mysql_escape_string בעצם מסנן פקודות וכו' של המסד בקשר לRFI כבר עניתי על זה לדוג' קח את ההזרקת SQL. בתודה,חגי אבישר, שמחתי לעזור ואני גם רוצה להגיד את דעתי בנוגע לזה שמגיבים כאן כלכך הרבה וזריז, יש כאן תחרות,התחרות היא ספציפית לגבי אבטחת מידע ותיכנות, אלה שמגיבים כאן ומתווכחים מנסים גם להוכיח את עצמם שהם טובים ולא רק לעזור, לפחות זוהי דעתי בנושא. |
שמע יכול להיות שאתה צודק עם הקטע של העזרה.
אבל עכשיו כל אחד מתלכלך על השני... הם אמרו שאתה חלטוריסט אתה אומר שהם לא באמת עוזרים סתם טובות הנאה וכו'. זה לא יגמר וחלאס... "אי אפשר לאבטח אתר בלי לראות אותו ולגלות את הפירצות שבו,אין כזה דבר, " מצטער לומר לך באתר שלך - phpsec.net היה את זה... עכשיו עזוב את זה..מה שסיכמתי שם היה נכון?! |
א.לא אמרתי שהם לא באמת עוזרים,אתה ראית שהם באמת עזרו,פשוט אמרתי שיש חלק שהכוונה שלהם זה לא רק עזרה
ב.יש הרבה שמועות,חצאי שקרים אבל שידברו,מי שמכיר אותי יודע מי אני ואם אתה תכיר גם אתה תדע ואני יוסיף אותך לאייסיקיו נדבר שם מחר גבר. ג.בPHPSEC רשום את מה אני מאבטח,לא רשום שזה מוכן ולא כלום,האבטחה המוכנה שלי היא למערכות מוכנות,כאלה שהגדרתי להם את האבטחה מראש,וגם כמו שאמרתי ואם לא אז תדע שאבטחת מידע זה דבר אינטגרלי שתמיד צריך להשתנות ואני תמיד משנה דברים במקומות ואני בחיים לא שם סתם אבטחה שלא קשורה למערכת בלי שאני מכיר את הניצולים שבה. בקשר למה שסיכמת שם אני יבדוק את זה מחר ממש אין לי כוח עכשיו אבל מחר בכיף גבר. |
א.לא אמרתי שהם לא באמת עוזרים,אתה ראית שהם באמת עזרו,פשוט אמרתי שיש חלק שהכוונה שלהם זה לא רק עזרה
ב.יש הרבה שמועות,חצאי שקרים אבל שידברו,מי שמכיר אותי יודע מי אני ואם אתה תכיר גם אתה תדע ואני יוסיף אותך לאייסיקיו נדבר שם מחר גבר. ג.בPHPSEC רשום את מה אני מאבטח,לא רשום שזה מוכן ולא כלום,האבטחה המוכנה שלי היא למערכות מוכנות,כאלה שהגדרתי להם את האבטחה מראש,וגם כמו שאמרתי ואם לא אז תדע שאבטחת מידע זה דבר אינטגרלי שתמיד צריך להשתנות ואני תמיד משנה דברים במקומות ואני בחיים לא שם סתם אבטחה שלא קשורה למערכת בלי שאני מכיר את הניצולים שבה. בקשר למה שסיכמת: בוטים\ספאם: אל תבדוק רק לפי סשן תעשה שמירה של IP בטקסט ואז אתה יכול לעשות אפ' FILE_GET_CONTENTS וSTRSTR לIP בקשר לXSS: "וגם חשוב לא לגרום לשגיאות למשל אם יש ?page=30 ועמוד 31 לא קיים אז שיבדוק שאם העמוד לא קיים שיעשה DIE אבל שלא יציג שגיאה, אלה דברים חשובים שאתה חייב לזכור." |
זה קשור לXSS??
הרי אם עשיתי אינבטל אפחד לא יכול להכניס שם שום דבר חוץ ממספרים... אז מה זה משנה? |
ציטוט:
|
אה אם עשית INTVAL אז סבבה
ובקשר אליך תומר: RFI יכול להיות גם PHP INJECTION אבל נתתי לך דוג' חדה שתמחיש לך את העיקרון של הRFI. לא ניסיתי להתלהב על אנשים וכל מי שחושב ככה כרגע מקבל את סליחתי ;) |
תשמע חגי, אתה מדבר שטויות והרבה פעמים, אתה מוכר לאנשים דברים שלדעתי הם שקר
מה נראה לך שכולם נגדך ? תהיה אמיתי זה ישתלם בסוף.... מה שאתה עושה או יותר נכון קורא לזה "מאבטח אתרים מקצועי" זה שקר בעיינים... אמרתי לך את זה פעם באופן פרטי. מילא היית מוכר לאנשים "אבטחה" ולא מדבר כל כך הרבה שטויות אז זה אולי היה נשמע אחרת. והמסר שלי הוא, שאף אחד לא נגדך פה, אתה גורם לזה על ידי זה שאתה מפגין חוסר ידע \ ממציא ביטויים שלא קיימים \ עובד על אנשים בעיינים אז ב 2 מילים, דיי תפסיק. מה שאתה עושה לא מכבד אותך, ולא מכבד קהילה שלמה של מתכנתים. |
חחחח מבירור שלי בנוסף לבדיקה שעשה כאן מישהו באשכול, יש ביטוי שנקרא RFI שקשור לאבטחה אבל זה לא מה שחגי ציין.
הפירוש של RFI באבטחה הוא Remote File Include, מה שמעיד על כך שחגי בטח שמע בעבר על הביטוי והריץ חיפוש בגוגל או וויקיפדיה ורשם מה זה וטעה. |
מפגין חוסר ידע?לא חושב,תראה לי דבר אחד שציינתי שהוא טעות
בקשר לביטויים שאתה אומר שאני ממציא וגם אתה ערן, באבטחת מידע RFI זה Request For Info אז כאן תסתובבו ותסתכלו על עצמכם ותבינו שאתם טועים, תצאו מהבועה שלכם,לחרטט אותכם אין לי שום סיבה וגם מניע אני בכלל לא מכיר אותכם, רוצים להמשיך להתווכח?בכיף. |
כל הזמנים הם GMT +2. הזמן כעת הוא 08:40. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ