תוכן זדוני וגניבת מידע
בגדול ההבדל בין תוכן זדוני לספאם הוא שתוכן זדוני הוא כבר מכוון לעשות נזק ישיר ממשי, כגון לשים תמונות *** לאנשים, להכניס וירוס לשרת, למחוק מידע, ועוד.
גניבת מידע = תוכן זדוני שמוציא את המידע ממני אל יעד אחר.
יש 3 רמות של פתרונות לבעיות הללו. הראשונה פשוטה יותר - מה שכתבנו בשיעור הקודם, תשימו תוכנות מתאימות.
השניה חצי מסובכת - גם הקוד שמחלץ מידע החוצה, צריך לבדוק את עצמו איזה מידע הוא מוציא ולמה, ובעיקר האם המתשמש יש לו הרשאות ומותר לו להוציא את המידע הזה.
אפשר לבקש מהAI לשים איזה פילטר בסיסי ופשוט על כל נקודות הקצה של הAPI שמוציא מיני מידע לא ציבורי, ואולי לעשות לוגים לבדיקה פעם בשבוע, אולי ממש לבדוק שאם מבקשים 10 שורות לא מגיע יותר מ10 שורות, אולי לבדוק קצב בקשות, ועוד ועוד.
הדבר השלישי, החשוב ביותר, והמעצבן ביותר כי חלק ממנו צריך לפעמים להיות ידני, וזה תמיד קשה לעשות על זה QA כראוי
חלוקת הרשאות וניהול הרשאות
קניתם שרת? מעולה, אתם מתחברים עליו עם יוזר ROOT, הסופר אדמין הכל יכול.
הפעלתם אתר? עם היוזר הזה? טעות חמורה. אם מישהו מצליח להריץ קוד זדוני הוא רץ ללא מגבלת הרשאות, רע מאוד.
טוב, שמתם יוזר APP לאתר. נתתם לו הרשאות מלאות? רע מאוד. הוא צריך רק הרשאות להריץ את האתר ולהנגיש את הדפים.
רגע, אז הוא לא יכול לגשת לDATABASE? נכון מאוד!
טוב, עשינו יוזר DBA ושמנו את היוזר והססמא שלו באיזה קובץ מוגן, ואמנם נתנו לAPP לקרא אותו, אבל הקוד צד שרת נכנס לDB בתור היוזר DBA. האם הוא יכול לעשות הכל בDB? לא טוב!
יאללה, עושים יוזר db_myApp שהוא יכול לקרא אך ורק את הטבלאות שלי, ויכול לעשות רק את הפעולות הגדרתי בקוד. זה מתאים. אגב יש גם מי שיפריד בין יוזר כתבן ליוזר קורא.
עכשיו אם האקר מכניס קוד זדוני, הוא לא יכול לעשות פעולות כי אין לו הרשאה, ואפילו בDB , (אם עשיתי sql parameters) אין לו הרשאה מעבר לקריאה וכתיבה (כלומר לא מחיקה, ולא פעולות שרת - כן הקוד SQL יכול לעשות פעולות בשרת!), וכ"ש אם אני מפריד ליוזר קריאה ויוזר כתיבה.
יש לי יוזרים בפנים? כתבתי כבר שכל יוזר צריך אימות הרשאות ואימות זהות, ואנחנו צריכים לוודא שכל פעולה שהוא עושה נעשית על מה שמותר לו, נניח כפל בדיקות שהפעולות נעשות רק על פריטים שמשוייכים אל היוזר הזה.
הצפנה
שימו לב, ותתיעצו עם הAI שלכם, יש מצבים שחובה לפי חוק, ויש מצבים שפשוט כדאי, להצפין את המידע, ככה שגם אם הוא נגנב, בהנחה שהוא נגנב מפנים, הוא לא קריא. זה נושא מורכב ועוד יותר מורכב ליישם, אז זה עובדה מול הAI