חזרה לגלריהBackend / Functions
ארכיטקטורת אבטחה: הצפנה וניהול סודות לקוח (End-to-End)
איך לקבל מפתחות API רגישים מלקוחות בפרונטאנד ולשמור אותם מוצפנים בבטחה ב-Entities. פותר את בעיית האבטחה של שימוש ב-Secrets גלובליים עבור נתוני קצה פרטיים.
y
yair huriטקסט הפרומפט
אני צריך ליישם מנגנון מאובטח לשמירה ושימוש ב-API Keys פרטיים של משתמשי הקצה באפליקציית ה-Base44 שלנו. המטרה היא שהלקוח יזין את המפתח שלו, והוא יישמר במסד הנתונים כשהוא מוצפן, ויפוענח רק בזמן ריצה בשרת כשצריך לבצע פעולה מול השירות החיצוני. אנא כתוב את הקוד הנדרש והנחה אותי לפי השלבים הבאים: מסד נתונים (Entities): הגדר שדה חדש מסוג String בשם encryptedApiKey ב-Entity הרלוונטי (למשל UserSettings או User). הצפנה ופענוח (Backend Functions): השתמש במודול crypto המובנה של Node.js. כתוב פונקציות עזר להצפנה ופענוח המשתמשות באלגוריתם aes-256-cbc. פונקציות אלו חייבות להשתמש במשתנה סביבה (Secret) בשם ENCRYPTION_MASTER_KEY (באורך 32 תווים) כמפתח ההצפנה הראשי, וליצור/להשתמש ב-IV (Initialization Vector) דינמי לכל הצפנה. פונקציית שמירה בשרת (saveUserApiKey): צור Backend Function שמקבלת את ה-API Key בטקסט גלוי מהפרונטאנד, יחד עם מזהה המשתמש. הפונקציה תצפין את המפתח בעזרת פונקציות העזר. הפונקציה תשמור את המחרוזת המוצפנת בשדה encryptedApiKey במסד הנתונים תחת המשתמש המתאים. פונקציית שימוש מאובטחת בשרת (לדוגמה performExternalApiCall): צור Backend Function שמדגימה שליפה ושימוש במפתח. הפונקציה צריכה לשלוף את encryptedApiKey מה-DB, לפענח אותו חזרה לטקסט גלוי בזיכרון בלבד. בצע קריאת HTTP דמוי-Fetch לשירות חיצוני (למשל OpenAI) באמצעות המפתח המפוענח. החזר את תוצאת הפעולה לפרונטאנד (לעולם אל תחזיר את המפתח הגלוי ללקוח). פרונטאנד (React / UI): צור קומפוננטת הגדרות פשוטה הכוללת שדה קלט (Input) להזנת ה-API Key וכפתור שמירה. הוסף את הלוגיקה שקוראת לפונקציית ה-saveUserApiKey ב-Backend. אנא ספק את כל קטעי הקוד, וציין היכן בממשק של Base44 עלי להגדיר את ה-ENCRYPTION_MASTER_KEY.