הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות > תכנות - מדריכים, code snippets

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 09-07-10, 09:45   # 1
Hagaibl
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2010
הודעות: 214

Hagaibl לא מחובר  

[מדריך] 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 קוד:
<?php
switch($_GET['act']) {
    case 
"main":
        include(
"main.php");
        break;
    default:
        include(
"indexContent.php");
}
?>
ואז אתם מוסיפים ערכים וCASE כפי שאתם צריכים פשוט מאוד לא?


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

הדרך הכי טובה להתגונן נגד זה זה לבצע בדיקה פשוטה:
האם ה
PHP קוד:
$_SERVER['HTTP_REFERER'
תואם למה שהוא צריך להיות.

XSS
מהו XSS? זוהי הזרקה אשר מנצלת מקומות פגיעים בקוד להזריק קוד HTML זדוני בכדי לפגוע באתר. למשל אם המשתמש רוצה הוא יכול להזריק שורת חיפוש שתוכנה הוא קוד זדוני.

הדרך הטובה ביותר למנוע את זה היא למחוק בעזרת פונקציות מובנות בPHP את הטאגי HTML שמכילה המחרוזת, להמיר את הסמלים המיוחדים בHTML.
עושים זאת כך:
PHP קוד:
<?php
    $formString 
strip_tags(htmlspecialchars($_POST['string']));
?>
ניתן לעשות גם שימוש בGET במקום POST או REQUEST.

SQL INJECTION
הדרך הכי נפוצה והכי פשוטה יחסית לפריצת אתרים.
איך מזהים SQL INJECTION? דבר ראשון בודקים אם הדף ניהיה לא תקין כלל אם נותנים ערך שלא הגיוני כמו -1 לID
מה הכוונה לדוגמה ויש לכם מערכת מאמרים, אתם רוצים רוצים לקבל את תוכן המאמר על פי הID שנמצא בשורת הכתובת
http://www.yoursite.co.il/article.php?id=1
מה ש"האקר" ינסה לעשות זה לתת ערך -1 ולראות עם הדף יהרס. אם כן הוא יודע שיש פגיעה ולאחר מכן ינסה להכניס את תוכן הSQLI שלו.
בכדי להגן על ערכים מספרים הכי ממולץ לבצע את הדבר הבא:
PHP קוד:
<?php
    $intValue 
is_numeric($_GET['id']) && intval($_GET['id']) > $_GET['id'] : die("Invalid id value");
?>
מה שעשיתי זה ביצעתי בדיקה שמחיבת שהערך יהיה מספרי ושהוא יהיה גדול מ0! כלומר תקין.
אם הבדיקה נכשלה תבוצע פקודת die.

בכדי לאבטח ערכים שהם מחרוזות משתמשים בשלוש פונקציות, אחת להסיר חלקים זדונים של HTML מהדף, השנים האחרות להסיר חלקים של XSS מהדף(הרי אנחנו לא רוצים שיהיה שניהם אה?)
עושים זאת ככה:
PHP קוד:
<?php
    $value 
strip_tags(htmlspecialchars(mysql_real_escape_string($_GET['string'])));
?>
חשוב לצין שיש לבצע את השימוש מפונקציה mysql_real_escape_string רק לאחר שיש חיבור mysql פתוח, אחרת תתקבל שגיאה.

זהו, הינה כמה טיפים ממני.
תהנו!
(תגובה לא עולה כסף :P)
__________________
בברכה,
חגי בלוך גדות.

Last edited by Hagaibl; 09-07-10 at 10:10..
  Reply With Quote
 

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

Tags
אבטחה, מדריך למתחילים, מדריך php


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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