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

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

BlueNosE 16-06-06 08:10

[PHP] ביטול פריצות אבטחה ע"י GET
 
שלום,
אני עובד על המערכת שלי,
skywar,
ואני צריך את עזרתכם =\

קיצור, יש לי משתנה, בשם gamelist.
עכשיו, אם ניגשים אליו ככה:
http://skyawr.webitem.co.il/index.php?gamelist=null
המשתנה נמחק.
זאת לא בעיה. במשתנה לא נכנס מידע כ"כ קריטי שאני לא יכול לשרוד שלא יראו אותו.
אבלל..
אני מוטרד מזה שמישהו יגש למשתנה יותר קריטי במערכת, ואולי יצליח לפרוץ אותה...
יש משהו להתחמק נגד זה?


תודה רבה למגיבים.

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

בניה 16-06-06 09:02

ב"ה


המשתנה נקרא
ככה:
קוד:

$gamelist
או ככה:
קוד:

$_GET['gamelist']
אם כמו באפשרות הראשונה זה לא בטוח מסוכן כי אם מוגדר בשרת
קוד:

register_globals = Off
אז זה לא מסוכן כי אי אפשר לגשת למשתנה מבחוץ(וככה זה בכל שרת נורמאלי)
ואפשר לבדוק את זה ככה:
קוד:

ini_get('register_globals')
ואם כמו באפשרות השנייה אז זה מידע שאתה מימילא אמור לקבל מהמשתמש אז פשוט תבדוק שאין בזה ערכים מסוכנים.

BlueNosE 16-06-06 13:59

ואני, כמו 90% מהאחרים בעולם, לא על שרת פרטי.
כמו כן, אני לא בעל גישה לקובץ INI לצערי. אחרת העולם היה הרבה יותר שמח.
xD
SOMETHING ELSE?

RS324 16-06-06 14:09

אוקי אז זאת פונקציה שכתבתי עכשיו - לא בדקתי אותה אבל רעיונית היא אמור לעבוד

אני מאמין שיש לך קובץ שנקרא gloabl.php שאתה קורא לו מכל הדפים

אז תדחוף את הפונקציה שם :
PHP קוד:

<?php

function deregister_globals()
{
    
$allowedvars =array(
    
'_GET' => $_GET,
    
'_POST' => $_POST,
    
'_REQUEST' => $_REQUEST,
    
'_COOKIE' => $_COOKIE,
    
'_FILES' => $_FILES,
    
'_SESSION' => $_SESSION
    
);

    foreach (
$GLOBALS AS $key =>$val)
    {
        if (!
in_array($key,$GLOBALS))
        {
            unset(
$GLOBALS['key']);
        }
    }
}


deregister_globals();

?>

עכשיו להסבר :

$allowedvars - זה הערכים שמורשים להשאר לדוגמא GET POST וכאלה אני שמתי שם רק כמה דוגמאות בשביל להמחיש את הרעיון.
כמובן שצריך לבדוק את הקוד ואולי לפתח אותו עוד קצת אבל עקרונית זה אמור לעבוד

תהנה.

BlueNosE 16-06-06 18:23

לא הבנתי איפה אתה משתמש פה בallowedvars... אין בו בכלל שימוש..

אני אנסה אחר כך.. תודה על הניסיון..
אה ד"א ומה קורה אם אני צריך GET?
O.o

MasterNir 16-06-06 20:53

אתה יכול לקבוע את ה-register_globals גם דרך ה-htaccess...

בשביל עוד מידע: www.justfuckinggoogleit.com

BlueNosE 18-06-06 14:09

ציטוט:

נכתב במקור על ידי MasterNir
אתה יכול לקבוע את ה-register_globals גם דרך ה-htaccess...

בשביל עוד מידע: www.justfuckinggoogleit.com

ולמה אתה חושב שאתה מצחיק? =/

miniature 18-06-06 14:11

לא הבנתי למה כשהתוכן של המשתנה הוא NULL הוא יימחק..?

BlueNosE 18-06-06 17:45

תחשוב שאתה יכול לגשת למשתנה $id ב2 צורות
1. $_GET['id']
2. $id
אבל זה מותנה במצב הregister_globals.
המצב האידאלי מבחינת אבטחה הוא off.
אבל אצלי הוא on, וזה יוצר בעיה רצינית באבטחה..


מקורה ככה? P:

RS324 18-06-06 17:51

מצטער פשוט כתבתי את זה דיי מהר ולא בדיוק בדקתי את זה

בבקשה הפונקציה המתוקנת....

PHP קוד:

<?php

function deregister_globals()
{
    
$allowedvars =array('_GET','_POST','_REQUEST','_COOKIE','_FILES' ,'_SESSION');

    foreach (
$GLOBALS AS $key =>$val)
    {
        if (!
in_array($key,$allowedvars))
        {
            unset(
$GLOBALS[$key]);
        }
    }
}


deregister_globals();

?>



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

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