לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 16-02-2008, 23:56
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
הוצאת משתמש מקובץ מסוים שהוא לא צריך להגיע אליו

נניח ויש מערכת ענקית עם מלא קבצים, ולרוב הקבצים המשתמש אינו צריך להגיע באופן ישיר (כלומר שב-URL אסור להיות שמו של הקובץ), אלא יש קובץ ראשי אחד שדרכו המשתמש מגיע לשאר הקבצים (על ידי ביצוע include בתוך הקובץ הראשי שמוביל לקבצים האחרים).

האם זה יהיה רלוונטי לבדוק שהמשתמש לא נכנס לקובץ ספציפי, קובץ כזה שהוא אינו צריך להגיע אליו ?

לדוגמא שאכתוב בראש הקובץ:

קוד PHP:
 if (strstr($_SERVER['REQUEST_URI'],'someFile.php'))
{
 echo 
'You are not allowed to enter this file!';
 exit();



וכך אמנע ממנו...

האם זה רלוונטי בכלל כאשר כל הקובץ הזה מכיל סה"כ מחלקה מסויימת?
[עריכה] אם אפשר אבקשם להתייחס גם למקרה אחר, שבו הקובץ לא מכיל מחלקה - אלא מריץ קוד כאשר הקוד לא בתוך פונקציה או מחלקה או כל דבר שיכול למנוע את הרצתו.

נערך לאחרונה ע"י DCD בתאריך 17-02-2008 בשעה 00:12.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 17-02-2008, 18:42
  emanuel emanuel אינו מחובר  
 
חבר מתאריך: 11.02.05
הודעות: 569
שלח הודעה דרך ICQ אל emanuel
לפי דעתי כן ^^ אמנם לא גדולה ממש אבל ישנה...
בתגובה להודעה מספר 3 שנכתבה על ידי DCD שמתחילה ב "מה שהראתי זה היה דוגמא, ויש..."

ולא חייב להיות מיוסם בדרך הזאת...
למשל אם יש לך קובץ מסוים שעושה משהוא...
תחשוב מה יקרה אם אני יכנס אליו ישירות...
הבנת?

מה שאתה מדבר עליו על הכניסה דרך GET זה כבר פריצת RFI או LFI...
תלוי איך אתה מיישם את הINCLUDE\REQUIRE...

עצה שלי היא כזאת!
1) בעמוד הINDEX תשתמש במנגנון SWITCH או מנגנון אחר שפורסם פה בפורום...
הקיצר כתיבת מערך אם כל הקבצים שאפשר לפנות אליהם...
ובהתאם לכך לבצא INCLUDE...
אם לא הבנת על מה מדובר אני ירחיב ^^...

2) כל עמוד של מחלקה או משהוא כזה...
אצלי מתחיל בקוד כזה:
קוד PHP:
 if(!isset($includeamod))
{
header('Location: 404 Not Found');
exit();


הקוד הזה פריץ במידה ומופעל REGISTER GLOBALS בשרת ^^
לכן מומלץ להשתמש בDEFINE...
לצערי יש לי כזה בלאגן בקצבים אני לא מוצא את הדרך שבה ישמתי את זה ^^...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 17-02-2008, 19:05
  emanuel emanuel אינו מחובר  
 
חבר מתאריך: 11.02.05
הודעות: 569
שלח הודעה דרך ICQ אל emanuel
לא ממש
בתגובה להודעה מספר 7 שנכתבה על ידי sniper2 שמתחילה ב "אני לא ממש מבין אותך מה כבר..."

אם בשרת יש באג SHELL INJECTION
או אפילו גם בלי זה ^^
רק שהאפשרות OPEN_BASE_DIR פתוחה למשל...
ואתה מתאכסן אצל ריסלר...
כל עוד יש לי חשבון אני יכול לראות את כל הקבצים שלך ^^...
שזה הרבה יותר מסוכן מגישה אליהם...

בכל מקרה ע"י הרצת BF אולי אני ישיג את הקבצים מעניין רק מי המשועמם שיעשה את זה מישהוא שבאמת יהיה מעוניין לפרוץ כנראה בכל מחיר...
ויש כאלה...

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

בגרסא 5 הם פשוט כתבו את כל הדברים בפונקציות ...
ככה שגם אם תגש לקובץ ישירות שום דבר לא ירוץ...
אך תכנות כזה הוא ממש קשה לכן אני ממליץ על הקוד שכתבתי למעלה
(רק להשתמש בDEFINR כמובן)

אשכול שנשאל על אותה שאלה...(בערך)
ליתר דיוק איך ההגנה מתבצאת בIBHEB
http://www.fresh.co.il/vBulletin/showthread.php?t=77122
מומלץ להשתמש בDEFINE במקום במשתנה רגיל...
כיוון שREGISTAR_GLOBLAS מופעל גורם לשיטה הזאת להיות פגועה ^^...

נערך לאחרונה ע"י emanuel בתאריך 17-02-2008 בשעה 19:07.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 17-02-2008, 19:34
  emanuel emanuel אינו מחובר  
 
חבר מתאריך: 11.02.05
הודעות: 569
שלח הודעה דרך ICQ אל emanuel
רעיון חמוד ביותר!
בתגובה להודעה מספר 9 שנכתבה על ידי sniper2 שמתחילה ב "אני עדיין לא מבין לאן אתה..."

צודק בקשר לBF אמרתי שאפשר להשתמש בBF
כדי לגלות את הקבצים הקיימים ^^...
תעבור על מה שכתבתי שוב + על הקישור שנתתי...

הרעיון שנתת מאוד חמוד = אהבתי ...
רק אני מעדיף במקום הLOCATION
למשל:
קוד PHP:
 header('Location: 404 Not Found'); 

שיראה לו שהעמוד אינו קיים...

נ.ב בקשר למה שהבאת נראה לי עדיף בתחילת העמוד של הINDEX לכתוב ככה:
קוד PHP:
 $_GET['secret'] = md5('Secret'); 

ואז יהיה אפשר לאנקלד בצורה נורמלית = רגילה...

אבל במקום להשתמש בזה אפשר להשתמש בDEFINE פשוט...
דוגמא:
קוד PHP:
 // בקובץ הINDEX
define('Emanuel_PG1' true);

// בקובץ המאונקלד
if(!defined('Emanuel_PG1'))
{
    
// DO SOMWTHING //



נ.ב יש פונקציה מאוד חמודה (כשעברתי על הנושא עברתי גם עליה)
http://php.net/get_included_files
ולבדוק האם הCOUNT של הקריאה לפונקציה הזאת גדול מ1...
ולכתוב את זה בכל הקבצים המאונקלדים (זה גם רעיון ממש חמוד)...
הפונקציה מחזירה מערך אם כל שמות הקבצים שעשו עליהם INCLUDE\REQUIRE...
עם קראו לקובץ ישירות אז זה יחזיר רק קובץ אחד(הקובץ שקראו לו)
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #20  
ישן 19-02-2008, 18:14
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
...
בתגובה להודעה מספר 1 שנכתבה על ידי DCD שמתחילה ב "הוצאת משתמש מקובץ מסוים שהוא לא צריך להגיע אליו"

כנראה שבסוף מה שאעשה זה הגדרת קבוע מסויים בקובץ המאנקלד הראשי ובכל קובץ מאונקלד אבדוק אם הקבוע הזה קיים, ובהתאם אבצע מה שארצה.

לדוגמא:
קוד PHP:
 if (defined('CONSTANT'))
{
  ... 
// throw him out



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

חשבתי להחליף במקום האפשרות הנ"ל, את זאת שבה אכתוב קוד שיאנקלד קובץ אחר, כמו:

קוד PHP:
 include_once 'errorTheUser.php'


ואז תוכנו של הקובץ יהיה לדוגמא:
קוד PHP:
 /* @File: errorTheUser.php */
if (defined('CONSTANT'))
{
  
header('Location: www.foo.com');



כך אוכל לשנות את השגיאה שאציג למשתמש בקלות במקום שיהיה צורך לערוך כל קובץ מחדש, במידה ונרצה להראות שגיאה אחרת.
באותו אופן אפשר יהיה לשנות את תוכנו של הקובץ errorTheUser.php לזה (כפי שהציג emanuel):

קוד PHP:
 /* @File: errorTheUser.php */
if (defined('CONSTANT'))
{
  
header('Location: 404 Not Found');  

ע"י עריכת קובץ אחד בלבד, פעם אחת בלבד, שזה יותר קל ונוח...

אני מניח שהקבצים המאונקלדים יתקמפלו גם טוב יותר ללא הוספות של פקודות\פונקציות של header או אחרות.

פתחתי את האשכול בעיקר בגלל שחשבתי שאולי יש פיתרון אחר (וטוב יותר) לנושא, כי ראיתי פיתרון דומה למה שהציגו פה בתגובות בקבצי המערכת IPB (גירסא 1.3).

תודה לכולם
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 11:55

הדף נוצר ב 0.07 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר