כיצד נראית טעות של מתחילים?

באגומט

New member
כיצד נראית טעות של מתחילים?

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

dolypooh

New member
אשמח אם תסביר יותר לעומק

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

Silver Strike

New member
הבעיה שבאגומט מתאר קשורה לאופן התכנון

של מנגנון רשימת התפוצה.

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

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

המערכת יכולה לחלופין לקחת את פרטי המייל, שם (אם קיים), תאריך וזמן הרישום למערכת ו/או נתון לא ידוע שנקבע על ידי המתכנן (salt) ולהריץ את הפרטים דרך אלגוריתם (יש לא מעט אופציות - בד"כ משתמשים ב-SHA או MD5). ישנם עוד אופציות כדי למנוע זיוף, אבל זו אחת הדרכים הכי נפוצות והכי מאובטחות.

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

אתה בכל מקרה יכול פשוט ליצור איתם קשר ולבקש שיסירו את הכתובת מהמאגר שלהם.
 

dolypooh

New member
תודה על ההסבר היסודי

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

itaym02

New member
הכל נכון, חוץ מ "והכי מאובטחות."

למעשה, בדיוק ההפך. אבל, אם אתה לא מוסד פיננסי, שזה לא ידאיג אותך.
 

Silver Strike

New member
"מאובטח" הוא נושא יחסי

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

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

Guy Yafe

New member
תודה

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

bnayal

New member
למה לעבוד על כזה דבר בכלל?

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

Guy Yafe

New member
חשבתי שדווקא אלה הכי מסוכנים

מכיוון ששולחים דרך השירותים האלה הרבה מאוד ספאם, הם מסוננים אוטומטית
 

bnayal

New member
אז ככה

השירותים הגדולים והמוכרים דואגים מאוד לשרתים שלהם ולשם שלהם ומאוד רגישים לעניין הזה.
אז קודם כל רצוי ללכת על משהו מוכר (mailchimp, Aweber וכו').
היקרים יותר נותנים לך Dedicated IP ככה שרק אתה שולח דרכו דוא"ל ואין לך מה לדאוג לאחרים.
החברות האלו בהרבה פעמים מגבילות אותך בדרך הייבוא של רשימות מיילים ובכל אלו שאני עבדתי איתן יש ניטור אחרי החשבונות, ברגע שיש Bounce Rate גבוה, אחוז תלונות גבוה (כאלו שלוחצים בתיבת דוא"ל שלהם "סמן כSpam") או אחוז Unsubscribe גבוה, הם ישר יסמנו את החשבון שלך כ"מסוכן" ויבדקו אותך לעומק.
אם השירות שווה לך אתה תשלם בעבורו. אם זה לאתר "בשביל הכיף", לא שווה להשקיע את הכסף לIP פרטי ואפילו יש כאלו שיתנו לך שירות בחינם עד מספר רשומים כלשהו (mailchimp לדוגמא).
 

באגומט

New member
איך אני עושה את זה (למי ששאל במסר)

את המזהה הייחודי מצפין למשתנה A
מוסיף token הסרה שנבנה על ידי אלגוריתם הצפנה אחר, ומבוסס על נתון מזהה אחר של המשתמש לתוך משתנה B
שולח את שניהם

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

TotalCommnader

New member
לא יותר פשוט לשמור ID רנדומלי לשימוש אותו יוז

ר בלבד יחד עם כל הפעולות שרק הוא מורשה לעשות?
 

באגומט

New member
לא

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

באגומט

New member
אולי לא הבנתי

הוא אקראי לכל הפקה?
אז איך אתה מוודא שהוא אותנטי?

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

TotalCommnader

New member
אקראי לכל הפקה, נשמר בDB, נבדק רק בעת הסרה או

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

Silver Strike

New member
קבל טגלון

(מסרב לקרוא לזה "הודעות נבחרות")
 
למעלה