View Single Post
ישן 15-05-07, 07:59   # 7
RS324
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 3,173

RS324 לא מחובר  

נעזוב את זה שאני חושב הקוד מועתק (כנראה מאיזה קוד חינמי איפהשהו).
ונעזוב את שאני בכלל צריך לנעול לך את הנושא כי זה מדבר על מערכת מוכנה
(אני לא מכיר שום אבטחה שהמילה "ibf_members" אומרת בה משהו שד"א גם אם במערכת השתמשתי ב PREFIX אחר זה לא יהיה אפקטיבי עבור זה).

נעזוב את הכל לרגע ונסתכל רק על מה שכתבת.

מה שעשית בעצם זה החלפה של המילים בתו ריק = '' לצורך העניין כל המילים שיכולות להיות בעייתיות דבר שהוא אלף לא יעיל, וב' לא הגיוני, כי אתה אף פעם לא יכול להכיל את כל המילים.

אם היית לוקח את התוים המסוכנים באמת וממיר אותם לערך שלהם... לדוגמא : " יהפוך להיות &qoute; או לחלופין " יהפוך להיות "\ הם במילה לא יוכלו להשתמש במילים האחרות... ככה שבכל שאילתה אתה חוסך לשרת לעבוד כמו מפגר. אני לא יכול עכשיו לשבת ולפרט את כל השיטות. הרעיון הוא תמיד לבדוק את הקלט לפני שהוא נכנס ולא לסנן אותו סתם בלי קשר.

דוגמא פשוטה:
בערכים מספריים, כ 90% מהמערכות לא עוברות את הערך של INT במערכות של 32 BIT שהוא 2147483647
לכן הדוגמא הפשוטה היא כל פעם שאתה מצפה לערך מספרי לדוגמא threadid
אז תעשה
$threadid = intval($_REQUEST['threadid']);
אם מישהו ינסה לעשות בזה שטויות רוב הסיכויים שה THREADID יהיה 0.

אם אתה משתמש במספרים שגדולים מ 2147483647 במערכות 32 ביט לדוגמא
999999999999999999999999999
אז תשתמש ב PREG בשביל לאמת את הנתונים (אני לא אכתוב איך תחשוב לבד).

זה היה נכון לעכשיו סתם דוגמא...
אבל בכל מקרה איך שלא תהפוך את זה. זה לא נכון מבחינה תיכנותית לסנן את כל המילים האלו מה GET מה גם שאתה מגביל את עצמך לעתיד.
בנוסף כל האבטחה הזאת לא ממש שווה אם לא התייחסת בכלל ל register_globals ול magic_qoutes שזה הדברים הבסיסיים ביותר
(אבל את זה אני מניח ש IPB כבר עשו בשבילך).

אז תחשוב על מה שאמרת
ונ.ב
---
הייתי מציע לך להרגע קצת בטון דיבור שלך כלפי משתמשים אחרים אני ממש לא רוצה להתחיל לצנזר הודעות ולחלק אזהרות, כנ"ל למשתמשים האחרים שמגיבים
  Reply With Quote