View Single Post
ישן 08-10-05, 19:31   # 4
omaniusd
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 823

omaniusd לא מחובר  

ציטוט:
נכתב במקור על ידי Ikki
רבותי שלום רב!,
החלטתי לכתוב במדריך זה על שיטות למניעת הזרקות והסבר כללי על הזרקות.
את המדריך אחלק לשלושה נושאי אם: מהם הזרקות?, כיצד פועלות ההזרקות? וכיצד נמנע הזרקות?.

מהם הזרקות?
הזרקות הינם זריקת תוכן מסויים לתוך משתנה.
היעד שלהם הוא לשטול מידע שיגרום לבאג/תוכן שגוי במערכת.


כיצד פועלות ההזרקות?
ההזרקות פועלות ע"י שליחת תוכן אחר לתוך שורת הכתובת.

למשל נתונה הכתובת:

ובמידה והקובץ אינו מוגן מהזרקות נוכל לשנות ערכים שיגרמו לבעיות.
ותוזרק הכתובת הבאה:

דבר אשר יגרום לבעיות.


כיצד נמנע ההזרקות?

מניעת ההזרקות אינה פעולה קשה במיוחד, לפעמים חשוב לחשוב על שיטת הצפנה אשר תעזור לנו למנוע הזרקה.

- הצפנת נתונים.
במידה ונרצה ליצור משחק, שיהיה כמעיין חפש את המטמון. וניצור לחצן שיוסיף נקודות למשתמש כפרס ע"י לחיצה במקום מסוים בפורום, ושכל מקום יביא מספר שונה של נקודות; אך לא נרצה לתת מספר קטלוגי לכל מקום, כך שיביא נקודות שונות.
מה נעשה?, נצפין בשיטת הצפנה מסוימת הידועה רק לנו את מספר הנקודות, או נצפין בכמה הצפנות !.

- מניעת הזריקות למשתנה.
כפי שידוע לנו במידה ולא נמנע את הזריקות הנתונים מהכתובת ייובאו לתוך משתנים.
כדוגמא זו:


בעצם שורת כתובת זו תבצע את השורות הבאות.
PHP קוד:
<?php
$act 
"addpoint";
$add 500;
?>
כלומר, הנתונים יוזנו לתוך המשתנה(addpoint יוזן למשתנה act, ו 500 יוזן למשתנה add).

כיצד נמנע זואת?
נוכל למנוע זואת ע"י הזנה שזוהיא שליחת GET.
ונבנה את הקוד הבא:
PHP קוד:
<?php
$action 
$_GET[act];
$nadd $_GET[add];
?>
* אפשר לכתוב בתוך ה [] עם גרשיים קטנים או בלעדיים, זה עניין של נוחות.

- ניפוי באגים והקצבת מספר ערכים אפשריים.

במידה ואנו מעוניינים ליצור את כל הפעולות בקובץ אחד, כלומר ליצור action.
כיצד ניצור זואת?, ניצור זואת ע"י פונקציית ה Switch.

לדוגמא:
PHP קוד:
<?php
switch($_GET[act]) {
case 
"addpoint":
    include(
"include/addpoint.php");
    break;
case 
"points":
    include(
"include/points.php");
    break;
case 
"main":
    include(
"include/main");
    break;
default:
    include(
"include/main.php");
}
?>

כאן אנו מזינים שיש אפשרות לact להיות שלושה ערכים(addpoint, points, main), ואם לא הוגדר ערך תגדיר תעשה כך וכך.
כמובן שנוכל להיות מתוחכמים יותר ע"י לולאה שיוצר את ה case ע"פ הקבצים הקיימים במחיצת "include".

למידע נוסף אודות פונקצייה זואת בקרו ביחידה המסבירה על פונקציית Switch במדריך הרישמי של Php:
http://www.Php.Net/Switch


בהצלחה!,
Ikki
זה חלק מאד מצומצם מנוזא ההזרקות.
  Reply With Quote