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

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

Ori The Man 20-08-12 19:20

מהי הדרך הכי טוב לחסום גישה ישירה לקבצי PHP
 
מהי הדרך הכי טוב לחסום גישה ישירה לקבצי PHP לצורך אבטחה כמובן.
שרק דרך השרת יהייה ניתן לשלוח אליו נתונים

Daniel 20-08-12 19:38

* להגדיר משתנה בקובץ הראשי (עם define) ולבדוק בקבצים אם is_defined
* שבקבצים עצמם יהיה רק class - הקובץ שמבצע את ה-include יצטרך לקרוא ל-class בעצמו
* htaccess
* לשים אותם בתיקיה מעל ה-public_html

אלה 4 שיטות אפשריות... מה שלרוב מיישמים זה שילוב של 1+2 - ברירת מחדל יש רק את ה-class ואז גם אם מישהו יגש זה לא ישנה לאף אחד... ואם צריכה להתבצע פעולה בקובץ בכל מקרה - אז בודקים אם:
PHP קוד:

is_defined("my_system_variable"

ורק אם כן ממשיכים.

Kernel 20-08-12 20:09

PHP קוד:

if ($_SERVER['REMOTE_ADDR'] != "127.0.0.1") { die('wrong ip'); } 

שים לב שבמידה ואתה עובד עם Virtual Hosts ב-Apache זה לא יעבוד (ובמקום 127.0.0.1 תחליף באייפי של השרת).

אבי.

בניה 20-08-12 20:21

גישה דרך הFILE SYSTEM או דרך HTTP?
ממה אתה חושש בסופו של דבר?

Daniel 20-08-12 20:35

ציטוט:

נכתב במקור על ידי Kernel (פרסם 855018)
PHP קוד:

if ($_SERVER['REMOTE_ADDR'] != "127.0.0.1") { die('wrong ip'); } 

שים לב שבמידה ואתה עובד עם Virtual Hosts ב-Apache זה לא יעבוד (ובמקום 127.0.0.1 תחליף באייפי של השרת).

אבי.

אבי, אבל גם כשאתה עושה include - המשתנים הגלובאליים (לרבות $_SERVER) לא משתנים..

אם משתמש נכנס אל index.php ושם בוצע include ל-someclass.php - אז ה-$_SERVER['REMOTE_ADDR'] ישאר ה-IP של המשתמש...

Itay 20-08-12 20:40

אם יש לך מבנה מסויים של קבצים, לדוגמא - כל המערכת עובדת דרך index.php, אז אתה יכול לבדוק אם הקובץ שהמשתמש נמצא בו (לא זוכר מה המשתנה ב-$_SERVER, תבדוק) הוא לא בשם הזה ואז לחסום גישה

Kernel 20-08-12 20:42

ציטוט:

נכתב במקור על ידי Daniel (פרסם 855021)
אבי, אבל גם כשאתה עושה include - המשתנים הגלובאליים (לרבות $_SERVER) לא משתנים..

אם משתמש נכנס אל index.php ושם בוצע include ל-someclass.php - אז ה-$_SERVER['REMOTE_ADDR'] ישאר ה-IP של המשתמש...

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

איציק ברבי 20-08-12 21:57

ציטוט:

נכתב במקור על ידי Kernel (פרסם 855025)
שים לב מה פותח הפוסט ביקש,
זה עדיין פותר לו את הבעיה.

מה קורה במקרה שיש RFI באחד האחסונים בשרת?

perfeito 20-08-12 22:03

אתה יכול פשוט לא לשים את הקבצים ב document root.

אני אישית שם קובץ אחד index.php
וכל שאר הקבצים הם מחוץ ל document root כך שאפשר לגשת דרך הרשת רק אל index.php.

Kernel 20-08-12 22:49

ציטוט:

נכתב במקור על ידי איציק ברבי (פרסם 855031)
מה קורה במקרה שיש RFI באחד האחסונים בשרת?

אם אבטחה קריטית לך, אתה תהיה לבד בשרת.

איציק ברבי 20-08-12 23:02

זה עדיין לא הכי בטוח,
כמו שהבחור perfeito אמר,
הכי טוב למקם את הקבצים במיקום ../public_html

Ori The Man 20-08-12 23:21

ברור שיש קבצים שהגישה אליהם רגישה אז הם בתיקיה מסויימת
העניין זה שיש לי קובץ לדוגמה index.php שיש שם הרשמה,לא בעיה לעשות היום form בכל שרת חיצוני ולשלוח אליו נתונים
אני רוצה שרק דרך הקובץ / האתר שלי יוכלו לעשות את זה

בניה 21-08-12 03:11

ציטוט:

נכתב במקור על ידי Ori The Man (פרסם 855039)
ברור שיש קבצים שהגישה אליהם רגישה אז הם בתיקיה מסויימת
העניין זה שיש לי קובץ לדוגמה index.php שיש שם הרשמה,לא בעיה לעשות היום form בכל שרת חיצוני ולשלוח אליו נתונים
אני רוצה שרק דרך הקובץ / האתר שלי יוכלו לעשות את זה

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

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

Ori The Man 21-08-12 18:29

האמת שאני שולח נתונים ע"י ajax ככה שזה גלוי למשתמש הפרמטרים + הקובץ שאילו הם נשלחים

בניה 21-08-12 19:25

ציטוט:

נכתב במקור על ידי Ori The Man (פרסם 855089)
האמת שאני שולח נתונים ע"י ajax ככה שזה גלוי למשתמש הפרמטרים + הקובץ שאילו הם נשלחים

הנתון שאתה תשלח יהיה יחודי וחד פעמי
וכדי להנפיק אותו המשתמש יצטרך לבצע פעולה קודמת מול השרת שלך שאותה אתה יכול לחרבש כך שיהיה לו קשה להבין מה בדיוק אתה עושה שם


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

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