דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. SQL -PHP שגיאה

SQL -PHP שגיאה

מתוזמן נעוץ נעול הועבר תכנות
26 פוסטים 3 כותבים 2.3k צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • dovidD dovid

    @ש-ב-ח וכנראה גם היית חשוף להזרקת SQL.
    אתה צריך להשתמש בפרמטרים https://www.php.net/manual/en/mysqli.prepare.php
    זה גם חוסך לך את כאב הראש של ניקוי המחרוזת או מה שנקרא escaping שלה, וגם מאבטח אותך.

    ש מנותק
    ש מנותק
    ש.ב.ח.
    כתב ב נערך לאחרונה על ידי ש.ב.ח.
    #8

    @dovid
    אני מתלבט אם אני יכול בכלל להשתמש בprepare

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

    על כל האמור בניתי סקריפט בphp שעובד באופן הבא:

    1. אני אמלא במשתנים בקובץ המקור את שם הdb שיש ליצור וכן את שאילתת יצירת הטבלאות, ועוד כהנה וכהנה.
    2. את כל הנתונים שאמורים להשתנות בין התקנה להתקנה אני מכניס בתקייה עם קבצי csv
    3. הסקריפט מבקש מהלקוח לבחור בנתונים אותו הוא צריך להכניס בDB.
    4. הסקריפט יעבור בין הקבצים ויכניס אותם לטבלה שעונה לשם הקובץ (לא כולל .csv), כמו כן השורה הראשונה מכילה את שמות העמודות בDB אליהם יש להכניס כל עמודה.

    בקיצור זה ממש דינמי בין שאילתה לשאילה, זה יכול להיות כמה טבלאות שבכל אחד מס' עמודות שונה...

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

    תקן אותי אם טעיתי.

    dovidD תגובה 1 תגובה אחרונה
    0
    • ש ש.ב.ח.

      @dovid
      אני מתלבט אם אני יכול בכלל להשתמש בprepare

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

      על כל האמור בניתי סקריפט בphp שעובד באופן הבא:

      1. אני אמלא במשתנים בקובץ המקור את שם הdb שיש ליצור וכן את שאילתת יצירת הטבלאות, ועוד כהנה וכהנה.
      2. את כל הנתונים שאמורים להשתנות בין התקנה להתקנה אני מכניס בתקייה עם קבצי csv
      3. הסקריפט מבקש מהלקוח לבחור בנתונים אותו הוא צריך להכניס בDB.
      4. הסקריפט יעבור בין הקבצים ויכניס אותם לטבלה שעונה לשם הקובץ (לא כולל .csv), כמו כן השורה הראשונה מכילה את שמות העמודות בDB אליהם יש להכניס כל עמודה.

      בקיצור זה ממש דינמי בין שאילתה לשאילה, זה יכול להיות כמה טבלאות שבכל אחד מס' עמודות שונה...

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

      תקן אותי אם טעיתי.

      dovidD מחובר
      dovidD מחובר
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי
      #9

      @ש-ב-ח אם אתה לא מקבל קלט מהמשתמש הכל בטוח, אבל אני מבין ממך שדוקא כן רק שזה לא ישיר.
      אם אכן זה מאוד דינמי ומשתנה אכן אתה חייב לעבוד ולנקות לבד.

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      ש תגובה 1 תגובה אחרונה
      1
      • dovidD dovid

        @ש-ב-ח אם אתה לא מקבל קלט מהמשתמש הכל בטוח, אבל אני מבין ממך שדוקא כן רק שזה לא ישיר.
        אם אכן זה מאוד דינמי ומשתנה אכן אתה חייב לעבוד ולנקות לבד.

        ש מנותק
        ש מנותק
        ש.ב.ח.
        כתב ב נערך לאחרונה על ידי
        #10

        @dovid אמר בSQL -PHP שגיאה:

        אבל אני מבין ממך שדוקא כן רק שזה לא ישיר

        הקלט שמתקבל מהמשתמש הוא שם הקובץ או שם כולל של כל הקבצים!
        כל השאר מתבצע באופן אוטו' על הקובץ.

        בהחלט אם הוא יכניס שם קובץ אחר זה יכול לשגע את המערכת, שוב לא מדובר במערכת עבור משתמשים לא מוכַּרים (אם הם ידפקו את עצמם.. שייהנו).

        בכל מקרה הוספתי לכל מידע שיעבור דרך הפונקציה הבאה:

        function clian_input($data){
        	$data = trim($data);
        	$data = htmlspecialchars($data);
        	$data = stripcslashes($data);
        	return $data;
        
        dovidD תגובה 1 תגובה אחרונה
        0
        • ש ש.ב.ח.

          @dovid אמר בSQL -PHP שגיאה:

          אבל אני מבין ממך שדוקא כן רק שזה לא ישיר

          הקלט שמתקבל מהמשתמש הוא שם הקובץ או שם כולל של כל הקבצים!
          כל השאר מתבצע באופן אוטו' על הקובץ.

          בהחלט אם הוא יכניס שם קובץ אחר זה יכול לשגע את המערכת, שוב לא מדובר במערכת עבור משתמשים לא מוכַּרים (אם הם ידפקו את עצמם.. שייהנו).

          בכל מקרה הוספתי לכל מידע שיעבור דרך הפונקציה הבאה:

          function clian_input($data){
          	$data = trim($data);
          	$data = htmlspecialchars($data);
          	$data = stripcslashes($data);
          	return $data;
          
          dovidD מחובר
          dovidD מחובר
          dovid
          ניהול
          כתב ב נערך לאחרונה על ידי
          #11

          @ש-ב-ח כמובן שזה תלוי באופי ומי המשתמשים אבל זה חור ממש ענק.
          עם קצת תחכום אפשר לקבל את המידע במסד.

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          ש תגובה 1 תגובה אחרונה
          1
          • dovidD dovid

            @ש-ב-ח כמובן שזה תלוי באופי ומי המשתמשים אבל זה חור ממש ענק.
            עם קצת תחכום אפשר לקבל את המידע במסד.

            ש מנותק
            ש מנותק
            ש.ב.ח.
            כתב ב נערך לאחרונה על ידי
            #12

            @dovid
            אשמח אם תכוון אותי מה כן עושים ע"מ שזה לא יקרה?
            (בהחלט לא רלוונטי לפרויקט זה, אך טוב למידע הכללי ולפרויקטים אחרים בעזרת השם)

            clickoneC dovidD 2 תגובות תגובה אחרונה
            0
            • ש ש.ב.ח.

              @dovid
              אשמח אם תכוון אותי מה כן עושים ע"מ שזה לא יקרה?
              (בהחלט לא רלוונטי לפרויקט זה, אך טוב למידע הכללי ולפרויקטים אחרים בעזרת השם)

              clickoneC מנותק
              clickoneC מנותק
              clickone
              כתב ב נערך לאחרונה על ידי
              #13

              @ש-ב-ח

              @dovid אמר בSQL -PHP שגיאה:

              אתה צריך להשתמש בפרמטרים https://www.php.net/manual/en/mysqli.prepare.php
              זה גם חוסך לך את כאב הראש של ניקוי המחרוזת או מה שנקרא escaping שלה, וגם מאבטח אותך.

              אין טסט כמו פרודקשן.

              המייל שלי urivpn@gmail.com

              ש תגובה 1 תגובה אחרונה
              0
              • clickoneC clickone

                @ש-ב-ח

                @dovid אמר בSQL -PHP שגיאה:

                אתה צריך להשתמש בפרמטרים https://www.php.net/manual/en/mysqli.prepare.php
                זה גם חוסך לך את כאב הראש של ניקוי המחרוזת או מה שנקרא escaping שלה, וגם מאבטח אותך.

                ש מנותק
                ש מנותק
                ש.ב.ח.
                כתב ב נערך לאחרונה על ידי
                #14

                @clickone

                @dovid אמר בSQL -PHP שגיאה:

                אם אכן זה מאוד דינמי ומשתנה אכן אתה חייב לעבוד ולנקות לבד.

                תגובה 1 תגובה אחרונה
                0
                • ש ש.ב.ח.

                  @dovid
                  אשמח אם תכוון אותי מה כן עושים ע"מ שזה לא יקרה?
                  (בהחלט לא רלוונטי לפרויקט זה, אך טוב למידע הכללי ולפרויקטים אחרים בעזרת השם)

                  dovidD מחובר
                  dovidD מחובר
                  dovid
                  ניהול
                  כתב ב נערך לאחרונה על ידי
                  #15

                  צריך לנקות את כל ערך שמקורו במשתמש. במקרה שלך שמדובר בקובץ גדול שעובר עיבוד ועל פיו אתה בונה טבלאות, אז אתה צריך בכל ערך שאתה משתיל בפקודת SQL לודאות את "נקיונו".
                  אני חושב שהפונקציה הזאת https://www.php.net/manual/en/mysqli.real-escape-string.php טובה עבורך.

                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                  ש תגובה 1 תגובה אחרונה
                  1
                  • dovidD dovid

                    צריך לנקות את כל ערך שמקורו במשתמש. במקרה שלך שמדובר בקובץ גדול שעובר עיבוד ועל פיו אתה בונה טבלאות, אז אתה צריך בכל ערך שאתה משתיל בפקודת SQL לודאות את "נקיונו".
                    אני חושב שהפונקציה הזאת https://www.php.net/manual/en/mysqli.real-escape-string.php טובה עבורך.

                    ש מנותק
                    ש מנותק
                    ש.ב.ח.
                    כתב ב נערך לאחרונה על ידי ש.ב.ח.
                    #16

                    @dovid
                    לפי המידע שקראתי שם
                    הפונקציה עושה את מה שעושים הפונקציות שכתבתי לך קודם ( ()trim() , stripcslashes)
                    התו היחיד שהפונקציה אותה נתת בודקת יותר מהפונקציות הנ"ל הוא " ' " (גרש בודד).
                    בכל מקרה ניתן להוסיף אותו לפונקצית ה ()trim כמופיע כאן:
                    https://www.php.net/manual/en/function.trim.php
                    ומה שאני עושה אפילו יותר מזה זה הפונקציה ()htmlspecialchars
                    שמבריחה את כל תגיות הhtml למינהם... כך שאם מישהו ינסה להזריק סקריפט PHP הוא יוברח!

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מחובר
                      dovidD מחובר
                      dovid
                      ניהול
                      כתב ב נערך לאחרונה על ידי
                      #17

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

                      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                      ש תגובה 1 תגובה אחרונה
                      0
                      • clickoneC מנותק
                        clickoneC מנותק
                        clickone
                        כתב ב נערך לאחרונה על ידי
                        #18

                        שימו לב שאפשר להזריק קוד JS, וגרוע מכך JS מקודד 😮

                        אין טסט כמו פרודקשן.

                        המייל שלי urivpn@gmail.com

                        dovidD תגובה 1 תגובה אחרונה
                        1
                        • clickoneC clickone

                          שימו לב שאפשר להזריק קוד JS, וגרוע מכך JS מקודד 😮

                          dovidD מחובר
                          dovidD מחובר
                          dovid
                          ניהול
                          כתב ב נערך לאחרונה על ידי
                          #19

                          @clickone כן אבל זה בכלל HTML כי לסקריפט חייבים תגית.
                          אא"כ בטעות הוא עושה echo בתוך תגית אבל זה כבר שלומאליות.

                          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                          תגובה 1 תגובה אחרונה
                          1
                          • dovidD dovid

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

                            ש מנותק
                            ש מנותק
                            ש.ב.ח.
                            כתב ב נערך לאחרונה על ידי
                            #20

                            @dovid אמר בSQL -PHP שגיאה:

                            אבל אני לא רואה אפשרות להזריק קוד PHP

                            גם קוד php הוא בתוך תגית...
                            אם אני אחזיר מהdb מידה שתוכנו הוא קוד php עם תגיות php הקוד יופעל,
                            מה שאין כן כרגע לאחר הניתוח של הסטרינג התגיות מוחלפות בקוד & lt; או & gt; ...
                            (ד.א. שמתי לב עכשיו שהפונקציה הזאת מטפלת גם בגרש בודד.)

                            dovidD תגובה 1 תגובה אחרונה
                            0
                            • ש ש.ב.ח.

                              @dovid אמר בSQL -PHP שגיאה:

                              אבל אני לא רואה אפשרות להזריק קוד PHP

                              גם קוד php הוא בתוך תגית...
                              אם אני אחזיר מהdb מידה שתוכנו הוא קוד php עם תגיות php הקוד יופעל,
                              מה שאין כן כרגע לאחר הניתוח של הסטרינג התגיות מוחלפות בקוד & lt; או & gt; ...
                              (ד.א. שמתי לב עכשיו שהפונקציה הזאת מטפלת גם בגרש בודד.)

                              dovidD מחובר
                              dovidD מחובר
                              dovid
                              ניהול
                              כתב ב נערך לאחרונה על ידי
                              #21

                              @ש-ב-ח אמר בSQL -PHP שגיאה:

                              אם אני אחזיר מהdb מידה שתוכנו הוא קוד php עם תגיות php הקוד יופעל,

                              זהו שאני אומר שלא. הוא יוצג במסמך.

                              • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                              • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                              ש תגובה 1 תגובה אחרונה
                              0
                              • dovidD dovid

                                @ש-ב-ח אמר בSQL -PHP שגיאה:

                                אם אני אחזיר מהdb מידה שתוכנו הוא קוד php עם תגיות php הקוד יופעל,

                                זהו שאני אומר שלא. הוא יוצג במסמך.

                                ש מנותק
                                ש מנותק
                                ש.ב.ח.
                                כתב ב נערך לאחרונה על ידי ש.ב.ח.
                                #22

                                @dovid אמר בSQL -PHP שגיאה:

                                זהו שאני אומר שלא. הוא יוצג במסמך.

                                גם עם הוא יעלה עם המסמך הוא לא יופעל?
                                לא בדקתי... אתה יודע בוודאות שהוא רק יוצג ולא יופעל?

                                dovidD תגובה 1 תגובה אחרונה
                                0
                                • ש ש.ב.ח.

                                  @dovid אמר בSQL -PHP שגיאה:

                                  זהו שאני אומר שלא. הוא יוצג במסמך.

                                  גם עם הוא יעלה עם המסמך הוא לא יופעל?
                                  לא בדקתי... אתה יודע בוודאות שהוא רק יוצג ולא יופעל?

                                  dovidD מחובר
                                  dovidD מחובר
                                  dovid
                                  ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #23

                                  @ש-ב-ח איך הוא "יעלה" עם המסמך? אתה לא מתכוון לשמור קבצי PHP על הדיסק נכון?

                                  • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                  • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                  ש תגובה 1 תגובה אחרונה
                                  1
                                  • dovidD dovid

                                    @ש-ב-ח איך הוא "יעלה" עם המסמך? אתה לא מתכוון לשמור קבצי PHP על הדיסק נכון?

                                    ש מנותק
                                    ש מנותק
                                    ש.ב.ח.
                                    כתב ב נערך לאחרונה על ידי
                                    #24

                                    @dovid אמר בSQL -PHP שגיאה:

                                    @ש-ב-ח איך הוא "יעלה" עם המסמך? אתה לא מתכוון לשמור קבצי PHP על הדיסק נכון?

                                    לא ירדתי לסוף הבנת השאלה.

                                    dovidD תגובה 1 תגובה אחרונה
                                    0
                                    • ש ש.ב.ח.

                                      @dovid אמר בSQL -PHP שגיאה:

                                      @ש-ב-ח איך הוא "יעלה" עם המסמך? אתה לא מתכוון לשמור קבצי PHP על הדיסק נכון?

                                      לא ירדתי לסוף הבנת השאלה.

                                      dovidD מחובר
                                      dovidD מחובר
                                      dovid
                                      ניהול
                                      כתב ב נערך לאחרונה על ידי
                                      #25

                                      @ש-ב-ח אל תבין, רק תענה היכי דמי שהוא "יעלה" עם המסמך.
                                      הרי אם אתה כותב

                                       echo '<php php_info();'
                                      

                                      זה יוצג, לא כן?

                                      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                                      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                                      ש תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD dovid

                                        @ש-ב-ח אל תבין, רק תענה היכי דמי שהוא "יעלה" עם המסמך.
                                        הרי אם אתה כותב

                                         echo '<php php_info();'
                                        

                                        זה יוצג, לא כן?

                                        ש מנותק
                                        ש מנותק
                                        ש.ב.ח.
                                        כתב ב נערך לאחרונה על ידי
                                        #26

                                        @dovid
                                        🙂 😉 😉 😉 😉 🙂
                                        לא חשבתי על זה 🙂
                                        🙂 😉 😉 😉 😉 🙂

                                        תגובה 1 תגובה אחרונה
                                        0
                                        תגובה
                                        • תגובה כנושא
                                        התחברו כדי לפרסם תגובה
                                        • מהישן לחדש
                                        • מהחדש לישן
                                        • הכי הרבה הצבעות


                                        • 1
                                        • 2
                                        בא תתחבר לדף היומי!
                                        • התחברות

                                        • אין לך חשבון עדיין? הרשמה

                                        • התחברו או הירשמו כדי לחפש.
                                        • פוסט ראשון
                                          פוסט אחרון
                                        0
                                        • דף הבית
                                        • קטגוריות
                                        • פוסטים אחרונים
                                        • משתמשים
                                        • חיפוש
                                        • חוקי הפורום