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

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

morsrh 23-01-11 18:40

העלאת תמונה.
 
יש לי את הקוד הזה http://pastebin.com/6fHJDmvL .
עכשיו השאלה שלי היא האם הקוד הזה ובטוח ואין בו פירצות כאלה ואחרות בשם או בקובץ אבטחה וכאלה שטויות והאם הקוד הוא נראה בסדר בעין מבחינה של ייעילות ובכללי.
תודה.

BlueNosE 23-01-11 19:12

unknown paste

morsrh 23-01-11 22:28

עשיתי שזה ישמר לשעה ...
הנה קישור חדש : http://pastebin.com/EqAZc3yJ
אם לא עובד (גם יותר נקי מבחינת הקוד) : http://pastebin.com/ujn12UrL
תודה.

~The_Sultan~ 24-01-11 09:08

תאבטח גם את שם הקובץ עצמו (וגם זה יעזור לך עם בעיות תקינות, כמו למשל עברית), לדוגמה:
PHP קוד:

$name preg_replace("/[^0-9A-Za-z]/"""$name); 

וגם הייתי מציע לעשות עוד בדיקה לסוג הקובץ, משהו בסיגנון הזה:
PHP קוד:

$efilename explode("."$_FILES['file_name']['name']); 
$ext $efilename[count($efilename) - 1];
if (
$ext != "jpg")
    echo 
"Wrong file type"

בהצלחה

morsrh 24-01-11 15:11

אחלה , הינה קוד עדכני יותר
http://pastebin.com/ymdk8n5H
מה יש עכשיו לשפר בנוגע לאבטחה וכל מיני שטויות אחרות?

~The_Sultan~ 24-01-11 17:24

תאבטח כמו שאמרתי את שם הקובץ עצמו,
ואני מניח שהתבלבלת קצת - המערך TYPES הוא כנראה מכיל פורמטים מותרים? אז אתה צריך לשנות את השורה של הבדיקה לשורה שאמורה להחזיר לך FALSE:
PHP קוד:

if (!(in_array($type $TYPES))) 


morsrh 24-01-11 18:02

אה וואלה כן , בלבול של רגע , ד"א זה נראה בכללי בסדר לעין ולא יעשה בעיות של אבטחה בהמשך?

~The_Sultan~ 24-01-11 18:45

אני לא אשף בהעלאת קבצים, אבל בכל זאת תוסיף את הסינון של תווים לא חוקיים בשם הקובץ. זה ימנע בעתיד בעיות גם בקידוד.
אל תשכח לעשות כמובן גם בדיקות בצד הלקוח בעזרת JS לפני שאתה מעלה את הטופס.
אם אתה רוצה לאפשר להעלות רק תמונות, אז אני זוכר שיש קטע שאפשר לשמור קובץ טקסט (TXT) ואז לשנות לו את הפורמט ל-gif והשרת יחשוב שזה תמונה סתם ככה כי אין פה בדיקה לעומק של הקובץ, ולכן אם ייכנסו לקובץ הזה בשרת שלך יראו את התוכן של קובץ הטקסט. בחיים לא ניסיתי לתקן את הבאג, אבל אולי אפשר באמצעות ניתוח הנתונים של התמונה עם getimagesize(). היא בטח תחזיר false, אם זו לא תמונה אמיתית.

בהצלחה.


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

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