חיבור לבנק בלי להחזיק סיסמת בנק על שרת
לבנקים בארץ אין API ללקוח פרטי — צריך להתחבר לאתר ולגרד. לא רציתי שהסיסמה תשב על שרת, כי שרת שמחזיק סיסמת בנק הוא יעד.
הפתרון, שני חלקים:
סוכן על המחשב בבית נכנס לבנק עם israeli-bank-scrapers (קוד פתוח, תומך ברוב הבנקים). הסיסמה לא עוזבת את המחשב. רץ כל 10 דקות.
השרת מקבל, לא מושך. הסוכן שולח POST עם היתרה והתנועות לנקודת קצה אחת, מוגנת במפתח משותף (השוואה ב-timingSafeEqual). לשרת אין שום קוד שמתחבר לבנק ואין אצלו שום פרט בנקאי.
שתי מלכודות:
הסוכן שולח בכל פעם את כל התנועות האחרונות, לכן לכל תנועה יש hash יציב מ־חשבון | תאריך | סכום | תיאור | מזהה ומה שקיים מדולג — אחרת כל סנכרון מייצר כפילויות.
ותנועה שמתחילה pending והופכת completed משנה תאריך ומזהה, כלומר hash אחר ונכנסת שוב. הפתרון: תנועה סופית שתואמת בסכום ובתיאור ל־pending בטווח 5 ימים מעדכנת אותה במקום להתווסף.
המחיר: המחשב בבית צריך להיות דלוק. זה מה שמשלמים על כך שהסיסמה לא בענן.