כתיבה נכונה של REST-API

ilgnd

New member
כמובן. אנחנו מייצרים באגים לפרנסתנו.

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

vinney

Well-known member
אתה מכיר את הלקוחות שלך הכי טוב

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

ilgnd

New member
יותר לכיוון של תיכוניסטים ומשחקי רשת

ראיתי כמה מימושים של מודולי OAuth, אבל יש איתם שתי בעיות:
אני עדיין אדרש לנהל בעצמי (אמנם המודול ינהל בעצמו, אבל זה יהיה תחת חסותי) שמות משתמשים וזהויות.
אני לא יודע אם אני יכול לסמוך על האבטחה שלהם.
 

rontech

New member
כמו שאמרו לך פה, אפשר להשתמש במוצר מדף

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

ולעניין עצמו....

שים לב בסעיף 1 שלך, כאשר הלקוח שולח POST אז האקר יכול להאזין להודעות עם תוכנת sniffer. פה אתה יכול להצפין ברמת האפליקציה או להשתמש ב-SSL.

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

אם ה- session פג תוקף צריך לבקש מהמשתמש לבצע login.

לפני פעולות קריטיות גם אפשר לבקש מהמשתמש לבצע login.

אמצעי הגנה נוספים שיכולים לעזור.....

משלוח SMS לטלפון של המשתמש...
משלוח אימייל למשתמש.....
סיסמאות חד פעמיות single time password.....
כאשר הסיסמאות החד פעמיות בתוכנה או אפילו עם דונגל....
ואפשר גם להוסיף PIN NUMBER לחשבון משתמש...
אה... כמעט שכחתי את שאלות האימות כמו "מי הייתה הגננת שלך"....

 

ilgnd

New member
השימוש ב-SSL הוא מובן מאליו. לא טרחתי לציין אותו.

אני אחזיר הודעה ששם המשתמש והסיסמה לא נכונים, אבל תמיד אשתמש ב-404. אני לא אבדיל בין מצב שהמשתמש קיים והסיסמה לא נכונה לבין מצב שהמשתמש לא קיים.
&nbsp
האם אתה מתכוון לDoS כלשהו או Brute-Force כדי למצוא שמות משתמשים? אם האפליקציה שלי תהיה אנטרפרייזית, כנראה אשתמש בשירותים שמסננים התקפות כאלה.
&nbsp
אם ה- session פג תוקף, עד כמה שידוע לי יש refresh-token שמחדש אותו. אם יעבור יותר מדי, אני אדרוש login חדש.
&nbsp
לגבי ההגנות הנדרשות: בסופו של דבר זה משחק רשת. אני מרגיש שהמשתמשים בו ירגישו שאני מעיק עליהם עם יותר מדי הגנות.
 

rontech

New member
משחק רשת

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

לגבי משחק.... נכון, לא מתאים לבקש משחקן לבצע login באמצע משחק...

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

ומה עם המשחק יקטע באמצע? תשמור לו על המצב עם COOKIE או על השרת כאשר זה שומר רק נתונים של המשחק נגיד ל 24 שעות בקובץ זמני
 

ilgnd

New member
זו אחת האופציות

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

rontech

New member
הטוב מאוד הוא האויב של הטוב

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

שים לב לכלל הבא....
In object-oriented programming, the open/closed principle states "software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification";[1] that is, such an entity can allow its behaviour to be extended without modifying its source code.
לתכנן את המערכת כך שאפשר יהיה להוסיף עוד נדברים מבלי צורך לכתוב הכל מחדש...
 

ilgnd

New member
נקודה כואבת

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

jellymean

New member
אני חש אמפתיה למצבך.

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

ilgnd

New member
תחרות ניווט

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

jellymean

New member
הממ...

השתתפתי בעבר באירועים של איגוד הניווט. תמורת כ-40 שקל היית מקבל מפה באיכות די טובה (1 ל בערך 12,000) והיית הולך בשטח ומחפש את הנקודות. בערך 10 או 12 נקודות שבכל אחת מהן המארגנים השאירו בשטח סימון. די נחמד.

הכוונה שלך שהמשתתפים ינווטו על מפה במחשב, או שממש ילכו למשחק בחוץ?

דרך אגב, בארצות הברית משחק כזה נקרא Geo Caching
 

ilgnd

New member
גם וגם

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

user32

Well-known member
מנהל
מה שתיארת הוא הסטנדרט

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

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

vinney

Well-known member
מה זה השטות הזאת שכתבת?

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

jellymean

New member
וינסנט, מה יהיה?

שים לב מי מנהל הפורום.

בכנות, הכל בסדר אצלך? יש הרגשה שאתה הולך ומאבד את זה.
 
למעלה