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

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



  #4  
ישן 09-07-2009, 18:07
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 3 שנכתבה על ידי 007 אקדח בהכחשה שמתחילה ב "כן האמת שניסיתי לחפש מידע וגם..."

למה הכוונה "דרך מאובטחת"?

אתה שולף מידע ממסד הנתונים ושולח אותו למשתמש.

אתה מתכוון אולי דרך יעילה? אם כך זה כבר קשור לשאילתא שלך ולממשק שמתחבר למסד הנתונים. מאוד מומלץ לעבור ל-mysqli (שים לב זה לא mysql), גם בגלל סיבות אחרות. חפש ב- http://www.php.net

אין לך לחשוש משליחת מידע למשתמש, אלא אם כן מדובר במידע רגיש שאז המשתמש יכול לראות אותו.

אבל אתה כן צריך לחשוש מהמידע שמגיע מהמשתמש - שמאוחסן (בין היתר) במשתנים הסופר-גלובאלים של PHP, כמו $_POST, $_GET, $_COOKIE ועוד.
בפורום בניית אתרים כנס לעוגן שפתחתי ותיכנס לקישורים לאתרים שיש שם בנוגע ל-PHP. יש גם בלוגים שעוסקים ב-PHP שם מייעצים לך כיצד לכתוב קוד מאובטח.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 10-07-2009, 09:23
  משתמש זכר dorM dorM אינו מחובר  
מנהל
 
חבר מתאריך: 26.07.08
הודעות: 6,473
בתגובה להודעה מספר 10 שנכתבה על ידי 007 אקדח בהכחשה שמתחילה ב "עשיתי את זה בצורה כזאת: שמתי..."

ממבט ראשון זה לא נראה כתיבה טובה בכלל (אבל זה בסדר כי אתה רק מתחיל).

הנה קוד אחר, שכולל מניעת SQL injections ופשטות הקוד:
קוד PHP:
 if ($_POST['announcement'] != ''
{

    
$update 'UPDATE `misc` SET `announcment` = 'filter_SQL(filter_HTML($_POST['announcement']));
    if (
mysql_query($update))
        echo 
'the database has been updated.';
    else
        echo 
'Could not update, an error occurred (error number #',mysql_errno(),'): 'mysql_error();
}
else
    echo 
"you leaved an empty field"


כמה נקודות לתיקון:
  • אין צורך להשתמש בסוגריים כשכותבים echo.
  • במקרה הנ"ל הנחתי ש-$_POST['announcement'] ייחשב שדה שלא מילאו אותו בתנאי שהוא שווה למחרוזת ריקה. לא היית צריך לכתוב בתנאי ה-if ובתנאי ה-elseif פעמיים את הפונקציה empty כי זה מיותר.
  • מיקום מחרוזת השגיאה של עידכון מסד הנתונים היה לא נכון, בקוד שכתבת PHP מעולם לא היה מריץ את זה ופולט ללקוח.
  • תתחיל כבר עכשיו לכתוב עם הזחות את הקוד שלך, אחרת יהיה לא נוח וקשה לשמור אותו מסודר.

בנוגע לפונקציות filter_SQL ו- filter_HTML, זה בהנחה שלא סיננת את המידע לפני כן, ובהנחה שאתה לא רוצה שהמשתמש יוכל לכתוב קוד HTML שהדפדפן יפענח.
אם תרצה שהמשתמש יוכל לכתוב קוד HTML, פשוט תוריד את הפונקציה filter_HTML.

הפונקציות האלו צריכות להכיל את הקוד הבא:

קוד PHP:
 function filter_HTML($str)
{
    return 
htmlspecialchars($str);
}

function 
filter_SQL($str)
{
    return 
mysql_real_escape_string($str);



אם היית מתחבר למסד נתונים דרך ממשק אחר, כמו mysqli, היית צריך להבריח את התוים עם פונקציה\מתודה אחרת.

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

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

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

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

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



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

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

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

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