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

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

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

בדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה

מתוזמן נעוץ נעול הועבר תכנות
24 פוסטים 3 כותבים 202 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • E מנותק
    E מנותק
    eido
    כתב נערך לאחרונה על ידי eido
    #7

    ערכתי את ההודעה הקודמת

    לדוגמא, הנה 2 קבצים (חלקיים לא צריך את כל הקוד הארוך).
    זה המתווך -
    main.php
    זה המבצע -
    deleteAds.php

    אני מכיר מחלקות, אבל אני לא רואה איך זה עוזר להפרדת המשתמש מהלוגיקה הפנימית. או שמחלקות בPHP זה שונה מC#?

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

      אוקי, זה בערך מה שחשבתי, אבל אני לא מבין מה שכתבת פה בכלל (אולי אני עייף ופשוט אקרא שוב למחרת יו"כ):

      השיקול שלי הוא, שהקוד מורץ בתור API, ואם כל אחד יכול לגשת לAPI בעצמו, זה יצא שגם אצטרך לתת הרשאות גישה למסד נתונים לכל אחד, לא? זה בעצם הסיבה שמלכתחילה התחלתי עם זה, ניסיתי לגשת ישר לAPI וקיבלתי שגיאה של גישה לא מורשית למסד הנתונים, אז אם זה מגיע דרך עמוד מתווך. א. אף אחד לא יודע מה הנתיב של העמוד שעושה בפועל, וככה לא יצליחו לשחק איתו יותר מידי (כמובן שאם יריצו סריקה על השרת יוכלו למצוא הכל, בכל זאת א"א למנוע הכל), וגם אם כן ימצאו עושים עליו הגבלת גישה רק מהIP של השרת עצמו, כך מונעים התקפות עליו ישירות (ברעיון, לא ניסיתי). ב. הגישה היא מהשרת ולא מהמשתמש, ככה לא צריך לפתוח הרשאות מיותרות.

      אתה יכול לפרט, איך התחלת? מה הכוונה קיבלת שגיאה של גישה לא מורשית? למי תצטרך לתת גישה?

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

        אנסה להסביר.
        בהתחלה (אני מדבר על פרויקט קודם, שממנו התחלתי ככה לעבוד) הקוד היה רק העמוד שתכל'ס מבצע דברים, בדוגמא שלנו העמוד deleteAds.php, כשניסיתי לגשת אליו מהדפדפן כדי להשתמש בו (לדעתי במקור הקובץ שלף מידע מהמסד נתונים) קיבלתי שגיאה, בדיקה העלתה שהשגיאה היא שצריך לתת הרשאות גבוהות לuser (הרי בשביל לגשת למסד נתונים צריך לפתוח user עם סיסמא, לא מספיק רק השם של המסד נתונים), ולהשתמש ב% כדי שיוכלו לגשת למסד נתונים גם מחוץ לשרת.
        זה לא מצא חן בעיני אז החלטתי להפריד בין המקום שיש למשתמש קצה גישה אליו למקום שמבצע דברים, כך לדעתי הרווחתי 2 דברים:

        1. אני לא צריך להשתמש ב%, יש למסד נתונים גישה רק מהשרת עצמו.
        2. יש פחות סיכוי לנזק לשרת, כי הקובץ שהמשתמש מגיע אליו לא יודע או יכול לעשות כלום, אין מצב שמשחילים לי DROP ALL TABLE ושאר מרעין בישין. וכן כשהמשתמש הזדוני מכיר את הקובץ שפועל בשרת ויכול לגיע אליו, לדעתי כבר יש לו רגל בפנים, כשהוא מכיר רק את הקובץ המתווך, הוא צעד אחד אחורה.

        מקווה שיותר מובן.

        תגובה 1 תגובה אחרונה
        1
        • E מנותק
          E מנותק
          eido
          כתב נערך לאחרונה על ידי eido
          #10

          די כמו MVC או Layered Architecture

          תגובה 1 תגובה אחרונה
          0
          • E eido

            @dovid לא מכיר תורות מוכנות, אם יש מושגי בסיס שאוכל לחפש אשמח לכמה.
            השיקול שלי הוא, שהקוד מורץ בתור API, ואם כל אחד יכול לגשת לAPI בעצמו, זה יצא שגם אצטרך לתת הרשאות גישה למסד נתונים לכל אחד, לא? זה בעצם הסיבה שמלכתחילה התחלתי עם זה, ניסיתי לגשת ישר לAPI וקיבלתי שגיאה של גישה לא מורשית למסד הנתונים, אז אם זה מגיע דרך עמוד מתווך. א. אף אחד לא יודע מה הנתיב של העמוד שעושה בפועל, וככה לא יצליחו לשחק איתו יותר מידי (כמובן שאם יריצו סריקה על השרת יוכלו למצוא הכל, בכל זאת א"א למנוע הכל), וגם אם כן ימצאו עושים עליו הגבלת גישה רק מהIP של השרת עצמו, כך מונעים התקפות עליו ישירות (ברעיון, לא ניסיתי). ב. הגישה היא מהשרת ולא מהמשתמש, ככה לא צריך לפתוח הרשאות מיותרות.

            צדיק תמיםצ מנותק
            צדיק תמיםצ מנותק
            צדיק תמים
            כתב נערך לאחרונה על ידי צדיק תמים
            #11

            @eido זה נקרא אבטחה באמצעות הסתרה וכדאי להתרגל להימנע מזה באופן גורף כי בדרך כלל התועלת קטנה והנזק גדול שיש תחושת שווא של אבטחה ולא דואגים לאבטחה אמיתית
            לדוגמה הזרקת SQL לא מגנים על ידי יצירת שכבות מלאכותיות אלא על ידי Prepared Statements (כמו שעשית) ואז אין עניין בכל השלבים (לא מבין מה אתה מתכוון רגל בפנים בגלל שיודעים את שם הקובץ)
            וגם הסתרה של שם קובץ זה לא הגנה, צריך להוציא אותו ממיקום שבו השרת אינטרנט מריץ או לחסום בקובץ .htaccess

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

            Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
            טיפים

            E תגובה 1 תגובה אחרונה
            3
            • E מנותק
              E מנותק
              eido
              כתב נערך לאחרונה על ידי
              #12

              אבל עד כמה שהבנתי זה גם בערך הצורה של MVC או Layered Architecture, לא?

              צדיק תמיםצ תגובה 1 תגובה אחרונה
              0
              • E eido

                אבל עד כמה שהבנתי זה גם בערך הצורה של MVC או Layered Architecture, לא?

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

                @eido לא עושים MVC על ידי שקובץ אחד קורא לקובץ אחר בcurl אלא הפרדה לוגית לקלאסים/פונקציות ואפשר גם חלוקת לוגיקה לקבצים ואז ייבוא עם include
                אגב ערכתי את התשובה והוספתי התייחסות לשאלה המקורית

                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                טיפים

                תגובה 1 תגובה אחרונה
                2
                • צדיק תמיםצ צדיק תמים

                  @eido זה נקרא אבטחה באמצעות הסתרה וכדאי להתרגל להימנע מזה באופן גורף כי בדרך כלל התועלת קטנה והנזק גדול שיש תחושת שווא של אבטחה ולא דואגים לאבטחה אמיתית
                  לדוגמה הזרקת SQL לא מגנים על ידי יצירת שכבות מלאכותיות אלא על ידי Prepared Statements (כמו שעשית) ואז אין עניין בכל השלבים (לא מבין מה אתה מתכוון רגל בפנים בגלל שיודעים את שם הקובץ)
                  וגם הסתרה של שם קובץ זה לא הגנה, צריך להוציא אותו ממיקום שבו השרת אינטרנט מריץ או לחסום בקובץ .htaccess

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

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

                  @צדיק-תמים כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה?:

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

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

                  צדיק תמיםצ תגובה 1 תגובה אחרונה
                  0
                  • E מנותק
                    E מנותק
                    eido
                    כתב נערך לאחרונה על ידי eido
                    #15

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

                    תגובה 1 תגובה אחרונה
                    0
                    • E eido

                      @צדיק-תמים כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה?:

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

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

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

                      @eido דואגים שהקובץ לא יהיה במיקום ששרת האינטרנט (אפאצ'י לדוגמה) מריץ

                      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                      טיפים

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

                        תודה, התכוונתי מבחינת הMVC וכו', איך עושים את ההפרדה?

                        עוד פרט, החלק של הPHP זה הליבה הוא מחזיר תשובות גולמיות, מה שיתקשר איתו ויעבד את הנתונים זה node.js, הבנתי שהוא מתקשר טוב עם ימות המשיח.

                        צדיק תמיםצ תגובה 1 תגובה אחרונה
                        0
                        • E eido

                          תודה, התכוונתי מבחינת הMVC וכו', איך עושים את ההפרדה?

                          עוד פרט, החלק של הPHP זה הליבה הוא מחזיר תשובות גולמיות, מה שיתקשר איתו ויעבד את הנתונים זה node.js, הבנתי שהוא מתקשר טוב עם ימות המשיח.

                          צדיק תמיםצ מנותק
                          צדיק תמיםצ מנותק
                          צדיק תמים
                          כתב נערך לאחרונה על ידי
                          #18

                          @eido זה לא ש Node.js מתקשר יותר טוב אלא שיש את הספריה yemot-router2
                          אבל מה הקשר לערבב גם PHP? אם אתה כותב בNode.js תעשה את הכל שם

                          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                          טיפים

                          E תגובה 1 תגובה אחרונה
                          0
                          • E מנותק
                            E מנותק
                            eido
                            כתב נערך לאחרונה על ידי
                            #19

                            היה לי קוד די מוכן בPHP ואת node אני לא מכיר כמעט, העדפתי להמשיך עם PHP

                            תגובה 1 תגובה אחרונה
                            0
                            • צדיק תמיםצ צדיק תמים

                              @eido זה לא ש Node.js מתקשר יותר טוב אלא שיש את הספריה yemot-router2
                              אבל מה הקשר לערבב גם PHP? אם אתה כותב בNode.js תעשה את הכל שם

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

                              @צדיק-תמים כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה:

                              זה לא ש Node.js מתקשר יותר טוב אלא שיש את הספריה yemot-router2

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

                              כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה:

                              תודה, התכוונתי מבחינת הMVC וכו', איך עושים את ההפרדה?

                              עוד פרט, החלק של הPHP זה הליבה הוא מחזיר תשובות גולמיות, מה שיתקשר איתו ויעבד את הנתונים זה node.js, הבנתי שהוא מתקשר טוב עם ימות המשיח.

                              ?

                              צדיק תמיםצ תגובה 1 תגובה אחרונה
                              0
                              • E eido

                                @צדיק-תמים כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה:

                                זה לא ש Node.js מתקשר יותר טוב אלא שיש את הספריה yemot-router2

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

                                כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה:

                                תודה, התכוונתי מבחינת הMVC וכו', איך עושים את ההפרדה?

                                עוד פרט, החלק של הPHP זה הליבה הוא מחזיר תשובות גולמיות, מה שיתקשר איתו ויעבד את הנתונים זה node.js, הבנתי שהוא מתקשר טוב עם ימות המשיח.

                                ?

                                צדיק תמיםצ מנותק
                                צדיק תמיםצ מנותק
                                צדיק תמים
                                כתב נערך לאחרונה על ידי צדיק תמים
                                #21

                                @eido כל עוד אתה לא צריך לטפל בסקייל ענק ולא משתמש בספריה הנ"ל מה זה משנה לך אם הוא אסינכרוני או לא? השרת אינטרנט מריץ תהליך נפרד לכל בקשה
                                לגבי MVC תפתח נושא חדש, איך עושים MVC נכון. אבל בקצרה אם יש לך קלאס שמייצג את האובייקט (או ORM) והפונקציות שלו נוגעות בדאטהבייס, פונקציה שמפרמטת את מבנה התשובה ופונקציה של הלוגיקה, יש לך MVC

                                Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                                טיפים

                                E תגובה 1 תגובה אחרונה
                                0
                                • E מנותק
                                  E מנותק
                                  eido
                                  כתב נערך לאחרונה על ידי eido
                                  #22

                                  אני לא יודע מה זה סקייל, אבל זה הולך משהו כמו (אנימתעלם מהלחיצה, רק מה שהמערכת אומרת):
                                  בחר עיר מתוך רשימה -> ירושלים, לאישור הקש 1 (עד כאן הכל טוב, שורה אחת בימות המשיח)
                                  בחר שכונה -> גבעת מרדכי, לאישור הקש 1 (כאן כבר מתחיל להסתבך, א"א להגדיר מראש וגם לא דרך השרת, וגם הבקשת אישור מסבכת). -> רחוב (כנ"ל ואפילו קצת יותר) ככה מספר, קומה מספר חדריםואחרי הכל השמעת המודעה ואפשרות בחירה של חלק לתיקון שבו כל הסרט מתחיל מחדש.
                                  בקיצור חתיכת כאב ראש בPHP

                                  צדיק תמיםצ תגובה 1 תגובה אחרונה
                                  0
                                  • E eido

                                    אני לא יודע מה זה סקייל, אבל זה הולך משהו כמו (אנימתעלם מהלחיצה, רק מה שהמערכת אומרת):
                                    בחר עיר מתוך רשימה -> ירושלים, לאישור הקש 1 (עד כאן הכל טוב, שורה אחת בימות המשיח)
                                    בחר שכונה -> גבעת מרדכי, לאישור הקש 1 (כאן כבר מתחיל להסתבך, א"א להגדיר מראש וגם לא דרך השרת, וגם הבקשת אישור מסבכת). -> רחוב (כנ"ל ואפילו קצת יותר) ככה מספר, קומה מספר חדריםואחרי הכל השמעת המודעה ואפשרות בחירה של חלק לתיקון שבו כל הסרט מתחיל מחדש.
                                    בקיצור חתיכת כאב ראש בPHP

                                    צדיק תמיםצ מנותק
                                    צדיק תמיםצ מנותק
                                    צדיק תמים
                                    כתב נערך לאחרונה על ידי
                                    #23

                                    @eido סקייל זה המון משתמשים בו זמנית
                                    מה שפירטת נפתר בנוד לא בגלל האסינכרוניות לבד אלא בגלל הספריה שעושה על זה קסמים

                                    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                                    טיפים

                                    תגובה 1 תגובה אחרונה
                                    1
                                    • צדיק תמיםצ צדיק תמים

                                      @eido כל עוד אתה לא צריך לטפל בסקייל ענק ולא משתמש בספריה הנ"ל מה זה משנה לך אם הוא אסינכרוני או לא? השרת אינטרנט מריץ תהליך נפרד לכל בקשה
                                      לגבי MVC תפתח נושא חדש, איך עושים MVC נכון. אבל בקצרה אם יש לך קלאס שמייצג את האובייקט (או ORM) והפונקציות שלו נוגעות בדאטהבייס, פונקציה שמפרמטת את מבנה התשובה ופונקציה של הלוגיקה, יש לך MVC

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

                                      @צדיק-תמים כתב בבדיקת קלט בשני עמודים שהאחד מעביר ארגומנטים לשני - האם כפולה? וצורת עובדה נכונה:

                                      לגבי MVC תפתח נושא חדש, איך עושים MVC נכון. אבל בקצרה אם יש לך קלאס שמייצג את האובייקט (או ORM) והפונקציות שלו נוגעות בדאטהבייס, פונקציה שמפרמטת את מבנה התשובה ופונקציה של הלוגיקה, יש לך MVC

                                      בלאגן הדבר הזה, הייתי בטוח שהPHP זה הM
                                      הNODEJS זה הC
                                      וימות המשיח זה הV

                                      מתברר שלא...

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


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

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

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