09-07-10, 09:45 | # 1 |
משתמש - היכל התהילה
|
[מדריך] PHP - אבטחת נתונים למתחילים
יש מספר אנשים אשר לא ממש יודעים איך להגן נגד פירצות.
אני אנסה להסביר לכם הפעם איך להתגונן נגד פרצות כמו LFI\RFI CSRF XSS SQL INJECTION אז בוא נתחיל? LFI\RFI קודם כל מה זה? LFI\RFI זה כאשר המשתמש(הפרוץ כביכול) עושה שימוש בInclude פריץ אצלכם באתר בכדי להגיע לקובץ מסוים לדוגמה. אם האתר מקבל מידע מדפים על ידי שהוא מבצע את הדבר הבא:http:/www.yoursite.co.il/index.php?act=main.php אנו רואים כי האתר מקבל מידע מן הקובץ main.php, כלומר שאם נשנה את הmain.php בקובץ לhttp://www.google.com>התוכן של האתר יהיה הדף של גוגל. השיטה הכי פשוטה להתגונן נגד הדבר הזה היא לא לעשות שימוש בINCLUDE שמתקבל ישר משורת הכתובת בלי לעבור בדיקה! עדיף להשתמש בswitch ולהגדיר case לכל אחד מהדפים ואז לבצע INCLUDE כלומר: PHP קוד:
CSRF מהו CSRF, זה כאשר משתמש שולח מידע מזויף לקובץ עיבוד הטופס שלכם. כלומר אם יצרתם טופס הרשמה עם השדות: שם משתמש, סיסמה ואימיל המשתמש. אך הנתונים בטופס נשלחים לקובץ חיצוני אשר מעבד את הנתונים ומכניס אותם למסד המשתמש מגלה את שם הקובץ המעבד. יוצר טופס מזויף עם פרטים שהוא רוצה ופשוט שולח אותו לעיבוד נתונים. מה שבצעם גורם זה שהמשתמש באותה המידה יכול להכניס טופס לא גלוי שברגע שהקורבן יכנס לאותו דף ישלח למקום כלשהוא איזה מידע שהוא רוצה. הדרך הכי טובה להתגונן נגד זה זה לבצע בדיקה פשוטה: האם ה PHP קוד:
XSS מהו XSS? זוהי הזרקה אשר מנצלת מקומות פגיעים בקוד להזריק קוד HTML זדוני בכדי לפגוע באתר. למשל אם המשתמש רוצה הוא יכול להזריק שורת חיפוש שתוכנה הוא קוד זדוני. הדרך הטובה ביותר למנוע את זה היא למחוק בעזרת פונקציות מובנות בPHP את הטאגי HTML שמכילה המחרוזת, להמיר את הסמלים המיוחדים בHTML. עושים זאת כך: PHP קוד:
SQL INJECTION הדרך הכי נפוצה והכי פשוטה יחסית לפריצת אתרים. איך מזהים SQL INJECTION? דבר ראשון בודקים אם הדף ניהיה לא תקין כלל אם נותנים ערך שלא הגיוני כמו -1 לID מה הכוונה לדוגמה ויש לכם מערכת מאמרים, אתם רוצים רוצים לקבל את תוכן המאמר על פי הID שנמצא בשורת הכתובת http://www.yoursite.co.il/article.php?id=1 מה ש"האקר" ינסה לעשות זה לתת ערך -1 ולראות עם הדף יהרס. אם כן הוא יודע שיש פגיעה ולאחר מכן ינסה להכניס את תוכן הSQLI שלו. בכדי להגן על ערכים מספרים הכי ממולץ לבצע את הדבר הבא: PHP קוד:
אם הבדיקה נכשלה תבוצע פקודת die. בכדי לאבטח ערכים שהם מחרוזות משתמשים בשלוש פונקציות, אחת להסיר חלקים זדונים של HTML מהדף, השנים האחרות להסיר חלקים של XSS מהדף(הרי אנחנו לא רוצים שיהיה שניהם אה?) עושים זאת ככה: PHP קוד:
זהו, הינה כמה טיפים ממני. תהנו! (תגובה לא עולה כסף :P)
__________________
בברכה, חגי בלוך גדות. Last edited by Hagaibl; 09-07-10 at 10:10.. |
09-07-10, 10:24 | # 2 | |
חבר וותיק
|
כתבה טובה כל הכבוד על ההשקעה!
מספר המלצות: ציטוט:
__________________
|
|
09-07-10, 10:27 | # 3 |
חבר על
|
יפה, מדריך שיכול לעזור מאוד
ותן קצת קרדיט על ה-SQLI.. ובקשר ל-$_SERVER['HTTP_REFERER'], זה לא ממש מומלץ להשתמש בזה סתם ככה, כי זה יכול לגרום בעיות אם למשל שינית דומיין או אם אתה עובד עם כל כתובות אחרות שיכולות להשתנות. בגדול עדיף אבטחה עם מסד או קוד CAPTCHA, אבל אם בכל זה מחליטים להשתמש בכתובת המפנה, אני ממליץ להשתמש בפונקציה הזו: http://php.net/manual/en/function.parse-url.php אבל כאן עדיין יש חור, במקרה שהבנאדם ישים על השרת שלו את אותה הכתובת, ולכן, הנה קוד סופי: PHP קוד:
PHP קוד:
עריכה: בהמשך למה שזה שמעליי אמר, בשביל לבדוק אם הערך מספרי בשיטה הכי תיקנית אפשר להשתמש בביטוי רגולארי פשוט: PHP קוד:
Last edited by ~The_Sultan~; 09-07-10 at 10:33.. |
09-07-10, 10:30 | # 4 | ||
משתמש - היכל התהילה
|
ציטוט:
אני נותן טיפים לא מדריך חח. ציטוט:
לגבי השאר זאת אבטחה בסיסית לחלוטין, אין לאף אחד שימוש כאן לעשות באבטחה מושלמת אנשים כאן בונים דברים פשוטים ואני נותן טיפים לאנשים שמתחילים רק. אם זאת הייתה קהילה של מתכתנים שבונים מערכות יקרות שצריכות אבטחה יותר טובה הייתי משחרר כבר פונקציות הגנה.
__________________
בברכה, חגי בלוך גדות. Last edited by Hagaibl; 09-07-10 at 10:33.. |
||
09-07-10, 10:41 | # 5 |
חבר על
|
מה זה קשור? אם אלו אנשים מתחילים אז זה בסדר אם הם לא יאבטחו את האתרים שלהם כמו שצריך? ועל מה אתה אומר מה פתאום?
|
09-07-10, 10:44 | # 6 | |
משתמש - היכל התהילה
|
ציטוט:
ותאמין לי שהאבטחה הזאת מספיקה היטב. היא מונעת SQLI כמו שצריך ואת שאר החרא. כל עוד אתה לא תשכח לעשות בהן שימוש הכל יעבוד כמו שצריך.
__________________
בברכה, חגי בלוך גדות. |
|
09-07-10, 10:45 | # 7 |
חבר על
|
לא לא, זה טיפשי להשתמש רק ב-HTTP REFERER כי אז אם אתה עובר דומיין, כמו שאמרתי, אתה צריך לעבור על כל העמודים במערכת שלך ולשנות את הקוד. בשיטה שאני נתתי אתה צריך רק לשנות את המשתנה $config בהתאמה. לצורך העניין, אתה משנה פה רק פעם אחת.......
|
09-07-10, 10:59 | # 8 |
משתמש - היכל התהילה
|
:| אז אתה לא קורא כניראה מה שאמרתי, אמרתי שכן צריך להגדיר, אמרתי רק את המשתנה שאליו להשוות, לא נתתי קוד.
__________________
בברכה, חגי בלוך גדות. |
09-07-10, 12:14 | # 9 |
חבר על
|
אינעל העולם, אנשים פה לא יודעים להודות שהם טעו.. אז לך תשבור תראש עם מה שאמרת..
|
09-07-10, 14:10 | # 10 | |
חבר וותיק
|
ציטוט:
CAPTCHA בכלל לא מיועד לפתירה של XSRF/CSRF אפשר להשתמש בזה לזה.. אבל על כל טופס באתר תמקם CAPTCHA? בנוסף - אין שום סיבה לא להשתמש ב REFERER - רק קח בחשבון שזה לא חובה שדפדפן ישלח REFERER וגם כל אחד יכול לשנות אותו בהתאם למצב רוח
__________________
|
|
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
Tags |
אבטחה, מדריך למתחילים, מדריך php |
כלים לאשכול | |
תצורת הצגה | |
|
|