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

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

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

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

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

    מבחינתי זה נטו בשביל אבטחה.

    איזה מבנה לא יעיל? של העמוד חיצוני שמנתב או זה שיש בדיקות בשניהם?

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

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

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

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

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

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

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

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

          • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
          • בכל נושא אפשר ליצור קשר dovid@tchumim.com
          תגובה 1 תגובה אחרונה
          0
          • 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
                                          תגובה
                                          • תגובה כנושא
                                          התחברו כדי לפרסם תגובה
                                          • מהישן לחדש
                                          • מהחדש לישן
                                          • הכי הרבה הצבעות


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

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

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