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

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



  #1  
ישן 14-01-2005, 13:46
צלמית המשתמש של ABM
  ABM ABM אינו מחובר  
 
חבר מתאריך: 15.05.02
הודעות: 5,458
עזרה בעיה בשימוש strpos

אני מנסה להוסיף ל-Postool את האפשרות שתתן למשתמשים להכניס קוד CSS שיופיע בעמודי התגובות שלהם.

הבעיה היא שהדבר מסוכן ודורש הגנה נכונה, כך שאם מישהו פתאום יחליט לכתוב במקום של ה-CSS:
קוד PHP:
<?

אז הוא יקבל פלט חסוי. אותו דבר לגבי פונקציות MySQL.

לכן, ניסיתי להגן על המידע שנכנס באמצעות הגנה עם strpos ובדיקה אם מילה אסורה נמצאת במחרוזת.
ניסיתי להשתמש כך:
קוד PHP:
 $pos strpos($css"SELECT"); 

ואז לבדוק באמצעות:
קוד PHP:
 if ($pos === true

אך אינני מצליח.

אני יודע שניתן וחשוב להשתמש ב-mysql_escape_string אבל הדבר הורס את הקוד שמגיע מהמשתמש. וגם אם הייתי עושה כך, ואז לפני ההדפסה הייתי עושה stripslashes או דבר דומה עדיין הייתי נתון בסכנה.

למישהו יש עצה כיצד לשפר את מערך ההגנה ולהשתמש נכון ב-strpos? כיוון שאינני מצליח להיכנס לתוך ה-if, למרות, שלדוגמא, המילה SELECT נמצאה בתוך המחרוזת. חשוב לציין שבדקתי שבאמת ל-CSS נקלט ערך ושה-pos אכן עובד. הבעיה היחידה היא שהתנאי לא עובד נכון, ומשום מה הוא לא נכנס לתוך ה-if.

אני יודע שניתן להשתמש ב-preg_match, אבל אני מודע לכך שזה לא יעיל וזה דורש המון משאבים. מה גם שאני תמיד מסתבך עם ביטויים רגולרים.

תודה לעוזרים.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #5  
ישן 14-01-2005, 18:08
צלמית המשתמש של ABM
  ABM ABM אינו מחובר  
 
חבר מתאריך: 15.05.02
הודעות: 5,458
דקל,
בתגובה להודעה מספר 4 שנכתבה על ידי דקל שמתחילה ב "דעה אישית"

אני רוצה להגן על כך שלא יוכלו לכתוב:
קוד PHP:
<? או.. mysql_query

וכו'..

אז כרגע השיטה שלי, שלדעתי מאוד לא יעילה היא:
קוד PHP:
 // Legal CSS Check
$str strtoupper($css);
$pos1 strpos($str"<?");
$pos2 strpos($str"HTTP");
$pos3 strpos($str"MYSQL");
$pos4 strpos($str"JAVASCRIPT");
$pos5 strpos($str"WWW.");
$pos6 strpos($str"SELECT");
$pos7 strpos($str"UPDATE");
$pos8 strpos($str"INSERT");
$pos9 strpos($str"DELETE");
$pos10 strpos($str"ALTER");
$pos11 strpos($str"DROP");
$pos12 strpos($str"JOIN");
$pos13 strpos($str"'");
$pos14 strpos($str"`");
$pos15 strpos($str"HANDLER");
$pos16 strpos($str"REPLACE");
$pos17 strpos($str"UNION");
$pos18 strpos($str"TRUNCATE"); 

ובסוף תנאי if ארוך מאוד.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 16-01-2005, 03:45
  דקל דקל אינו מחובר  
 
חבר מתאריך: 20.02.03
הודעות: 2,396
ביקשת עוד דעה...
בתגובה להודעה מספר 7 שנכתבה על ידי ABM שמתחילה ב "תודה, אבל.."

אולי לא הצלחתי להבין מה בדיוק אתה מנסה לעשות- אבל עדיין אני מתקשה להבין למה אתה מתעקש להסיר את כל המחרוזות המסוכנות.
אני יוצא מנקודת הנחה שבתוך המשתנה css$ יש את הקוד אחרי שהוא כבר הוצא מהדטאבייס. מה שאתה עושה בעצם במהלך הריצה
של הסקיפט זה מדפיס:
קוד PHP:
 echo "<style type=\"text/css\">
<!--
$css
-->
</style>\n"

בוא נגיד באמת שמישהו הכניס פנימה SELECT או DROP TABLE... מה זה מפריע לך? הרי מבחינת הסקריפט שלך- זה לא משנה כלום.
הסקריפט שלך קולט את ה CSS שהמשתמש הכניס, מכניס אותו לתוך הדטאבייס,ולאחר מכן מוציא אותו ושולח כפלט. הוא לא מעבד אותו,
לא מריץ אותו בנפרד וכו'... (במיוחד אין שום סיבה להתחיל להעיף תגי php...)
הדבר היחיד שאתה צריך לעשות זה "להבריח" את המרכאות ושאר התוים הרגילים שיש צורך להבריח (באמצעות mysql_real_escape_string)
שגם ככה אתה אמור לעשות את זה על כל קלט שאתה מקבל מהלקוח...
בסופו של דבר- אם הלקוח יכניס שטויות רק הוא יסבול מזה לא אתה... ככה שזה לא משנה.
אשמח לקבל תיקונים/הסברים אם זה לא עוזר לך...

בברכה, דקל
_____________________________________
"מתכנת זה אדם שפותר בעיה שעל קיומה לא ידעת, בדרך שאינך מבין"

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 16-01-2005, 05:28
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
לדעתי...
בתגובה להודעה מספר 1 שנכתבה על ידי ABM שמתחילה ב "בעיה בשימוש strpos"

שמור את ה CSS שלו איפשהוא (מצידי שיהיה קובץ PHP שישלוף את ה CSS מה DB וישלח אותו, לדוגמא getcss.php?user=userid), ואז תקרא ל CSS מתוך ה HTML שה PHP שלך שולח (תעשה view source על העמוד שאתה נמצא בו עכשיו בפרש, ותראה למה אני מתכוון).

ככה ה CSS לא מעורבב בכלל ב PHP, ואי אפשר לדחוף ל PHP שום דבר...

אחרי שהבנת מדוע כקובץ חיצוני זה לא יכול להשפיע על PHP, אפשר להתקדם הלאה, ולהגיד לך שגם אם הקוד מכיל תגי PHP, ASP, JAVASCRIPT ומה שלא יהיה, זה עדיין הולך להיות פלט של ה PHP, ולא משהו ש PHP עצמה תבצע, אלא הדפדפן! ולכן, הדבר היחיד שאתה רוצה להגן מפניו הוא כנראה... ג'אווהסקריפט, HTML ו ActiveX (כדי למנוע Cross-Site Scripting וכו'), דברים שאתה יכול למנוע בקלות באמצעות הפונקציה strip_tags על כל מה שחוזר מה DB (או יותר טוב, להעביר את הקלט דרך strip_tags לפני שהוא נכנס ל DB).

אם לא הבנתי נכון, אתה מוזמן לפרשן
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 17-01-2005, 16:24
  isoTop isoTop אינו מחובר  
 
חבר מתאריך: 23.11.04
הודעות: 218
הנה פתרון יותר טוב
בתגובה להודעה מספר 1 שנכתבה על ידי ABM שמתחילה ב "בעיה בשימוש strpos"

ציטוט:
במקור נכתב על ידי ABM
אני מנסה להוסיף ל-Postool את האפשרות שתתן למשתמשים להכניס קוד CSS שיופיע בעמודי התגובות שלהם.

הבעיה היא שהדבר מסוכן ודורש הגנה נכונה, כך שאם מישהו פתאום יחליט לכתוב במקום של ה-CSS:
קוד PHP:
<?

אז הוא יקבל פלט חסוי. אותו דבר לגבי פונקציות MySQL.

לכן, ניסיתי להגן על המידע שנכנס באמצעות הגנה עם strpos ובדיקה אם מילה אסורה נמצאת במחרוזת.
ניסיתי להשתמש כך:
קוד PHP:
 $pos strpos($css"SELECT"); 

ואז לבדוק באמצעות:
קוד PHP:
 if ($pos === true

אך אינני מצליח.

אני יודע שניתן וחשוב להשתמש ב-mysql_escape_string אבל הדבר הורס את הקוד שמגיע מהמשתמש. וגם אם הייתי עושה כך, ואז לפני ההדפסה הייתי עושה stripslashes או דבר דומה עדיין הייתי נתון בסכנה.

למישהו יש עצה כיצד לשפר את מערך ההגנה ולהשתמש נכון ב-strpos? כיוון שאינני מצליח להיכנס לתוך ה-if, למרות, שלדוגמא, המילה SELECT נמצאה בתוך המחרוזת. חשוב לציין שבדקתי שבאמת ל-CSS נקלט ערך ושה-pos אכן עובד. הבעיה היחידה היא שהתנאי לא עובד נכון, ומשום מה הוא לא נכנס לתוך ה-if.

אני יודע שניתן להשתמש ב-preg_match, אבל אני מודע לכך שזה לא יעיל וזה דורש המון משאבים. מה גם שאני תמיד מסתבך עם ביטויים רגולרים.

תודה לעוזרים.

תעשה טופס שמקבל את הצבעים שאתה צריך ותבנה את את הCSS דינמית בעצמך ככה הם לא יוכלים להכניס סתם קוד.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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