מכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?
-
כתבתי סקריפט מסוים שעובד בצד לקוח (קונסול/Tampermonkey), והשקעתי בו הרבה, וכנראה הוא עונה על בעיה שאין לה פתרון אחר, ובצורה מוצלחת, וכיוון שכך חשבתי אולי למכור אותו.
השאלה איך אני יכול לבנות מנגון שיוודא
א. שהמשתמש בסקריפט שילם - וה"רשיון" שלו בתוקף (אני רוצה לעשות גם "גרסת נסיון" מוגבלת בזמן (לא ביכולות).
הערה: אימות התשלום לא חייב להיות אוטומטי (כמובן שעדיף...) אלא יכול להיות שאני מאשר את התשלום ידנית במערכת ומנפיק סריאל או משהו דומה, המערכת רק צריכה לבדוק שהסריאל בתוקף)
ב. שלא אחד ישלם, ויעתיק לכל חבריו מכריו וידידיו, וזה יעבוד לכולם, כי הוא שילם...
חשבתי להכניס מנגנון אימות בסקריפט, למשל מול שרת שלי, ואז לערבל את הקוד היטב, למניעת הסרת האימות וכדו'.
השאלה איך בונים כזה מנגנון? למישהו יש כיוון/רעיון?
תודה רבה. -
@צדיק-תמים לא יודע איך לעזור לך.
רק אני יכול קצת לייאש אותך... שאני לא חושב שתוכל לעשות משהו למתחכמים, כי זה בכל זאת צד לקוח, אני משער שאין פה שום צד שרת, (דהיינו הוא לא צריך לקבל מידע מאיזה API וכדו').לאנשים פשוטים, אתה יכול לעשות שיקבל את הקוד JS בAPI בצורה מוצפנת, והצד לקוח יפענח את זה עם מפתח.
-
@www יש API, אבל לא שלי... כלומר הקוד לוקח נתונים מAPIים שונים, אבל לא מAPI של שרת שלי וכדומה. אם אני ישנה את זה שזה יעבור דרך שרת שלי מה זה יאפשר?
@www אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
לאנשים פשוטים, אתה יכול לעשות שיקבל את הקוד JS בAPI בצורה מוצפנת, והצד לקוח יפענח את זה עם מפתח.
כלומר? ומה ימנע ממנו אחרי הפענוח להפיץ את זה לכל עמ"י?
-
@צדיק-תמים אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
כלומר? ומה ימנע ממנו אחרי הפענוח להפיץ את זה לכל עמ"י?
אמרתי לך שלמתחכמים אין לי פתרון...
@צדיק-תמים אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
אם אני ישנה את זה שזה יעבור דרך שרת שלי מה זה יאפשר?
שלא תביא את הנתונים רק למי ששילם...
-
@www מה עם אימות מול שרת? כלומר הסקריפט שולח בקשה עם הסריאל, ומקבל תשובה מהשרת האם זה תקין ותקף. אם לא מתקבלת תשובה חיובית - הסקריפט לא יעבוד..?
@www אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
שלא תביא את הנתונים רק למי ששילם...
שוב, איך אני עושה כזו בדיקה?
-
@צדיק-תמים לא הסברת מה הבעיה לבנות כזה מנגנון.
תשאל את המשתמש מה הקוד שלו, ואם זה מוצא חן בעיניך תמשיך הלאה.בשונה מ@WWW
אני מציע להתרחק לגמרי מהרעיון לערבל את הקוד.
עצה טובה באמת תהיה: שמור על הקוד שלך אצלך, ואל תעביר אותו בשום צורה.
אפילו לעשות תוכנה דסקטופית, עם קוד מקומפל לגמרי, יש שהיו מסתייגים, אם זה משהו יקר לך, ובודאי אם זה משהו יקר באמת.
בימינו יש פתרון נהדר: להקים אתר שמספק את השירות שאותו אתה יכול לספק.
אם זה לא יכול לעבוד מסיבה כלשהי, למשל מכיון שהקוד פועל על מידע שנמצא רק ברשות הלקוח, חפש פתרונות לסוגיה הזו: איך לעשות שהקוד שלך יעבוד על משהו שיש רק למשתמש. פתרון אפשרי: תוסף שישלח אליך את המשהו הזה, ואתה תעבד אותו בצד שלך. -
@5566brs אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
לא הסברת מה הבעיה לבנות כזה מנגנון.
לא אמרתי שיש בעיה, אלא שאין לי מושג מאיפה להתחיל, וגם מסתמא יש דברים מוכנים, או לפחות חצי מוכנים, ואין לי מושג מה לחפש...
@5566brs אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
תשאל את המשתמש מה הקוד שלו, ואם זה מוצא חן בעיניך תמשיך הלאה.
ואיך אני מוודא שהוא לא יוכל להעתיק את זה בשלמותו לאחר?
אולי איזה אימות עם חשבון גוגל? לא יודע... -
@צדיק-תמים אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
אולי איזה אימות עם חשבון גוגל? לא יודע...
רעיון מצוין.
אם השימוש הוא לעתים רחוקות, אפשר לשלוח קוד לדוא"ל, או קוד דרך הטלפון.מן הסתם מה שנכון הוא לשבת עם עצמך ולהחליט כמה יקר לבנות את המנגנון, וכמה שווה להשקיע בהגנה.
-
@צדיק-תמים אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
@www מה עם אימות מול שרת? כלומר הסקריפט שולח בקשה עם הסריאל, ומקבל תשובה מהשרת האם זה תקין ותקף. אם לא מתקבלת תשובה חיובית - הסקריפט לא יעבוד..?
הוא לא יעבוד, אבל מי שיודע JS, ימחק את השורה הזאת, והכל יעבוד...
-
אין שום דרך להגן על צד לקוח שאינו תלוי בשרת.
למשתמשים חסרי כל הבנה - אין גישה לJS.
משתמש עם קצת הבנה - יש גישה בקלות, וגם ילמד ארים בקלות.
ערבול קוד ופטנטים דומים - משפרים מעט את המצב.
גם תלות בצד שרת - יעילותה מוגבלת, תלוי באיזו רמה היא תלויה, צריך משהו יותר ממינימלי. אבל בכל זאת זה יותר כי זה כבר דורש מעט הבנה בקוד ולא רק יכולת העתקה.3 הצעות:
- להעמיד שרת, ולהעביר דרכו חלקים מהותיים.
- לארוז את האפליקציה בקובץ EXE שמכיל דפדפן (על פניו-אלקטרון) שהגישה לקוד שלו נעולה. למיטב הבנתי הדרך לפרוץ את זה זה רק פריצה של הEXE עצמו - זה כבר דורש יכולת של מתכנת ממש.
- להקים שרת כמו אופציה 1, אבל לקמפל אותו לתכנת דסקטופ מקומית (די קל), כך אינך צריך להחזיק שרת פעיל משלך. אפשר גם לשלב עם אופציה 2.
עריכה
הצעה 4 - להקים אתר משלך ולעבוד נורמלי, ולא להתעסק עם הזרקת סקריפטים לאתרים, שזו הזמנה להמון צרות.אה, ועוד משהו - אם תזריק את הסקריפט דרך תוסף כרום, ותבנה אותו מתאים (ולא דרך...), בדרך כלל קוד בתוסף הוא יותר מורכב ומשתמש רגיל לא יודע לעשות העתק-הדבק לקונסול. הצלה פורתא.
בסוף אין דבר לא פריץ, באבטחה הכל שאלה ממי ועד כמה אתה מעונין להגן. -
@davidnead אמר במכירת מוצר (סקריפט) צד לקוח - איך לפקח על שימוש בתשלום?:
לארוז את האפליקציה בקובץ EXE שמכיל דפדפן (על פניו-אלקטרון) שהגישה לקוד שלו נעולה. למיטב הבנתי הדרך לפרוץ את זה זה רק פריצה של הEXE עצמו - זה כבר דורש יכולת של מתכנת ממש.
לא קשור למתכנת, וזה לא כ"כ קשה לפריצה, אא"כ משתמשים בערבולי קוד מיוחדים.