ABA


"שאלה למבינים במסדי נתונים, web service וjavascript"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20386 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20386
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   20:49   04.12.13   
אל הפורום  
  שאלה למבינים במסדי נתונים, web service וjavascript  
 
   אהלן,

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

חשבתי על הדבר הבא:
ליצור webservice שידבר עם הDB. הwebservice ידבר באמצעות פרוטוקול, יקבל נניח שם של פקודה ויידע לתת בחזרה את הנתונים המתאימים מהמסד. (ככה להימנע לחלוטין מsql injection).

כאשר את השיחה מהלקוח לwebservice ינהל הjavascript מצד הלקוח.
כלומר להוריד את זה מצד השרת וככה גם לחסוך בתעבורה שלו..

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

תודה רבה לעוזרים..!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב משה הלולן 04.12.13 21:02 1
     השאילתה תהיה בצד שרת. השאלה היא אם זה נכון לביצוע שמי שיבצע את כל השיחה עם הDB איציק2 04.12.13 21:20 2
         אתה בעצם רוצה לבנות mvc שהקונטרולר והview הם בצד שרת משה הלולן 04.12.13 21:30 3
             בוא נצא מנק' הנחה שהweb service יישב באותו סרבר שאליו אתה שולח בקשת HTTP איציק2 04.12.13 21:43 4
                 תבנה לך סוג של api משה הלולן 04.12.13 21:50 5
                     בדיוק, REStful API Net_Boy  05.12.13 13:09 6
                         תודה, נראה מעניין. הדבר הזה בעצם פועל ישר מהclient side? ואיך אני גורם לאוטנטיקצ איציק2 06.12.13 01:59 7
                             REST VeNom  06.12.13 09:53 8
                                 ענית לי בול על השאלה, תודה רבה עזרת מאוד!! איציק2 06.12.13 13:20 10
  הפתרון ל-SQL Injection לא קשור לשכבות שבהן תשתמש, last_test 06.12.13 10:01 9
     בגדול, האפליקציה והאתר אמורים לספק את אותו שירות. איציק2 06.12.13 14:02 11

       
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק
   21:02   04.12.13   
אל הפורום  
  1. מכתב  
בתגובה להודעה מספר 0
 
   לא הבנתי מה אתה מנסה לעשות אבל בסופו של דבר השאילתה תיהיה חייבת להיות בצד שרת.
ממליץ לך פשוט לבנות api שתשתמש בו.. נורא פשוט.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   21:20   04.12.13   
אל הפורום  
  2. השאילתה תהיה בצד שרת. השאלה היא אם זה נכון לביצוע שמי שיבצע את כל השיחה עם הDB  
בתגובה להודעה מספר 1
 
   יהיה איזשהו web service ולא כמו שמלמדים (לפחות באקדמיה) שיש איזו מחלקה שמטפלת בנושא באתר עצמו.
(לדוג' בPHP פונים ישירות לDB וכנ"ל בASP.NET ובMVC וכו').

כלומר הweb service יממש את הלוגיקה שתטפל בכל הנושא, וממקום מסוים (javascript או אפילו מהשרת שיושב עליו הקוד של הPHP) אני יבקש מהweb service שיביא לי את המידע המסוים - לדוג' רשימת כל המעילים מהDB, הweb service יעביר את זה כjson או משהו בסגנון חזרה למי שביקש..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק
   21:30   04.12.13   
אל הפורום  
  3. אתה בעצם רוצה לבנות mvc שהקונטרולר והview הם בצד שרת  
בתגובה להודעה מספר 2
 
   אולי כבר יש פתרונות כאלה.
זה נשמע לי דווקא יותר בזבוז משאבים כי מה שיקרה
שכל הזמן הקונטרול ישלח מידע לשרת יקבל מהשרת חזרה יעשה משהו, אולי ישלח לשרת שוב איזה בקשה יקבל ויבנה את הview
בסופו של דבר נראה לי שיתבזבזו יותר משאבים


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   21:43   04.12.13   
אל הפורום  
  4. בוא נצא מנק' הנחה שהweb service יישב באותו סרבר שאליו אתה שולח בקשת HTTP  
בתגובה להודעה מספר 3
 
   העניין שאני רוצה שיהיה רק מקום אחד שיטפל בנתוני השרת ושיהיה אפשרי לגשת אליו גם מאפליקציה לסלולר.. אני רוצה להימנע מלבצע שאילתות גם ברמת הקוד של הobjective c וגם ברמת הקוד של השרת ווב..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק
   21:50   04.12.13   
אל הפורום  
  5. תבנה לך סוג של api  
בתגובה להודעה מספר 4
 
   לדוגמא אתר של חולצות
קבלת כל החולצות בjson לדוגמא(גם לסלולרי גם לאתר)
exmample.com/shirts/all

קבלת חולצה 10
exmple.com/shirt/10/get

החולצות הכי מבוקשות:
example.com/shirts/mostwanted

עריכת חולצה 10:
POST: example.com/shirt/10/edit

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   13:09   05.12.13   
אל הפורום  
  6. בדיוק, REStful API  
בתגובה להודעה מספר 5
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   01:59   06.12.13   
אל הפורום  
  7. תודה, נראה מעניין. הדבר הזה בעצם פועל ישר מהclient side? ואיך אני גורם לאוטנטיקצ  
בתגובה להודעה מספר 6
 
   אוטנטיקציה לעבוד עם זה? כלומר שרק יוזרים מורשים יוכלו לשלוח חלק מהשאילתות..?


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   09:53   06.12.13   
אל הפורום  
  8. REST  
בתגובה להודעה מספר 7
 
   בעצם אומר במילים פשוטות בוא ונתן לך לבנות שירות מעל HTTP בצורה קלה ומהירה ובלי overhead שיש כמעט בכל פריימוורק שדרכו בונים סרביסים.

אתה שולח בקשת HTTP לשרת עם GET\POST\PUT\DELETE על פי מה שאתה מבקש:
GET - אני רוצה לקבל נתונים.
POST - אני רוצה לעדכן נתונים.
PUT - אני רוצה להכניס נתונים.
DELETE - אני רוצה למחוק נתונים.

נהוג לממש את זה לכל אובייקט בשימוש של קונטרולר פר אובייקט.

נגיד ויש לך אובייקט של student..אז get ל student בלי ID יביא לך חזרה את רשימת כל הסטודנטים. GET עם מזהה יביא לך את הסטודנטים לפי המזהה וכדומה.
מחיקה\הכנסה\עדכון יעשו עם מזהה חד חד ערכי.

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

במקרה שלך, אתה תבצע בקשות מהJAVASCRIPT שלך(AJAX) לסרבר שיממש RESTFUL WEBSERVICE וידע לטפל לך בבקשות. הסרבר ידע לדבר עם ה DB ויחזיר לך תשובה(במקרה שלך JSON זה מאוד נוח). הJSON יגיע חזרה ל JS ומשם תעשה איתו מה שבא לך.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   13:20   06.12.13   
אל הפורום  
  10. ענית לי בול על השאלה, תודה רבה עזרת מאוד!!  
בתגובה להודעה מספר 8
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
last_test
חבר מתאריך 20.8.13
328 הודעות
   10:01   06.12.13   
אל הפורום  
  9. הפתרון ל-SQL Injection לא קשור לשכבות שבהן תשתמש,  
בתגובה להודעה מספר 0
 
   SQL Injection נגרם כתצואה ממידע שמגיע מה-User ולא עובר תהליך escape לפני שמשתמשים בו בשאילתא עצמה.

הפתרון לזה הוא להשתמש ב-Prepared Statements, כתבתי על זה באשכול של "דוקטור חייק":

https://rotter.name/nor/prog/20359.shtml

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
איציק2
חבר מתאריך 26.4.08
2436 הודעות
   14:02   06.12.13   
אל הפורום  
  11. בגדול, האפליקציה והאתר אמורים לספק את אותו שירות.  
בתגובה להודעה מספר 9
 
   השירות בגדול דורש הרשמה, ויש אפשרות לבצע שאילתות על המסד כדי לראות נתונים מסוימים..
אין סיבה שהשאילתות שיהיו באתר יהיו שונות מהשאילתות שיהיו באפליקציה.

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


תודה.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net