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

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

dabi 30-10-08 16:46

הגנה מפני הזרקות
 
כאשר יש לי טופס שנשלש והוא נשמע במסד אני עושה ככה
htmlspecialchars
סבבה
עכשיו אני רוצה לעשות איזה טופס שבו אנשים מוסיפים קוד HTML
לדוגמא קוד לסירטון מYOUTUBE
PHP קוד:

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/_rBbFBSyZf0&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_rBbFBSyZf0&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object

אם אני משתמש ב htmlspecialchars זה כמובן יבטל לי את הקוד יוסיף "\" וכו'
מה אני עושה כדי לאפשר להכניס את הקוד הזה ועדיין להיות מוגן במערכת?
תודה

Deagly 30-10-08 17:02

כאשר אתה רוצה להכניס את הקוד למסד תשתמש ב htmlspecialchars
כאשר אתה שולף את הקוד מהמסד ורוצה להציגו תשתמש ב htmlspecialchars_decode

נראה לי שזה מה שחיפשת גם :)

יניב בן צבי 30-10-08 17:58

פשוט מאוד... אני יפתור לך את זה בקלות...
תבנה פונקציה שמקבלת את הקישור לעמוד הסירטון למשל הסירטון הזה
http://www.youtube.com/watch?v=5lGPHfPDMmg

והופכת אותו לזה:
HTML קוד:

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/5lGPHfPDMmg&hl=en&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5lGPHfPDMmg&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
פשוט מאוד ע"י preg_replace
פשוט תיקח מכתובת את v=5lGPHfPDMmg
ותוסיף אותו לכתובת הזאת ככה:
http://www.youtube.com/v/5lGPHfPDMmg
וזה הקישור לסירטון
ואחכ תוסיף לזה את הhtml הדרוש זה יצרוך ממך פחות מקום במסד
מקווה שעזרתי בהצלחה

dabi 30-10-08 19:03

לא תמיד הקודים של הצפיה הישירה של YOUTUBE זהים
מידי פעם מתווסף לשורה של הכתובת &feature=related וכו'
איך אני יסדר את זה כל פעם

dabi 30-10-08 23:19

אני לא יכול לערוך
בכל מקרה מה ש יניב בן צבי לא טוב לי
אני רוצה לקחת ממספר אתרים כמו YOUTUBE FLIX וכ'ו סירטונים
לכן אני שואל איך אני יכול לתת למשתמשים להכניס את הקוד HTML בלי שהם יזריקו לי JS לדוגמא
כי גם אם אני יעשה htmlspecialchars_decode זה לא יעזור
כי בעמוד שבו אני מצג את הקוד HTML שהוכנס אם הכניסו לי איזה קוד דפוק ב JS זה לא טוב לי

אשמח לעזרה

Shon12 30-10-08 23:45

ראשית-עושה שניי עמודות, אחת youtube_videos, והשנייה flix_videos.
ואז נותן להם רק להכניס את הקוד של הקישור לסירטון, ואז אתה עושה עליו htmlspecialchars, לדוגמא:
PHP קוד:

http://www.youtube.com/v/_rBbFBSyZf0&hl=en&fs=1 

ואז נותן להם תיבת-בחירה מאיפה הסירטון, לדוגמא:
YOUTUBE
FLIX

במידה והוא בחר ב-Youtube, אתה מציג לו את הסירטון כך למשל:
HTML קוד:

<embed src=".$row['youtube_videos']." />
במידה והסירטון הוא מ-Flix:
HTML קוד:

<embed src=".$row['flix_videos']." />
מקווה שהבנת, בהצלחה!

dabi 30-10-08 23:54

אני רוצה להשתמש בנגן של YOUTUBE ולא בנגן של מדיה פלייר

Shon12 30-10-08 23:57

אז על אותו עיקרון רק בתגית object וparam כמו שהצגת בהודעה הראשונה שלך.

dabi 31-10-08 00:05

זהו שזה לא ככה
לא תמיד ה VALUE שמוכנס הוא אותו דבר
http://www.youtube.com/v/_rBbFBSyZf0&hl=en&fs=1
מידי פעם מצטרפים אליו משתנים שונים וכו'

Shon12 31-10-08 00:14

זה לא משנה, YOUTUBE עשה כבר את העבודה הזו, הוא עושה העברה אוטמטית גם אם תתן לו להכניס - http://www.youtube.com/v/_rBbFBSyZf0&hl=en&fs=1
הוא יעביר אוטמטית ל:
http://www.youtube.com/swf/l.swf?swf...t=1&fs=1&hl=en
ככה שלך זה לא משנה.


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

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