מדוע הגנה מפני צילום מסך היא קריטית לאפליקציות מובייל
אפליקציות בנקאות, פורטלים רפואיים, מסנג'רים ארגוניים — כל מסך עם נתונים רגישים עלול להיות פגיע. צילום מסך יכול להגיע לגלריה, להסתנכרן לענן, להיקרא על ידי אפליקציות אחרות דרך MediaStore באנדרואיד, או להישמר אוטומטית בתמונות ב-iOS. באפליקציות פינטק, זה מפר ישירות דרישות אבטחה — סעיפים 4.2/5.1 בהנחיות App Store Review, PCI DSS. הגנה מפני צילום מסך חיונית לחסימת צילומי מסך, והיעדרה מוביל לעיתים קרובות לחסימת פרסום בחנויות. לפי הנתונים שלנו, 90% מבדיקות האבטחה דורשות הגנה מפני צילום מסך. אנו מיישמים הגנה על שתי הפלטפורמות כבר למעלה מ-5 שנים, והשלמנו 30+ פרויקטים לפינטק ו-MedTech. הגישה שלנו מבטיחה עמידה בדרישות App Store ו-Google Play באמצעות שילוב של ממשקי מערכת ופתרונות מותאמים אישית. בדיקה טיפוסית אורכת יום אחד, וזמן היישום הממוצע הוא יומיים עם בדיקות על 20+ מכשירים. למעלה מ-100 מיליון משתמשים נהנים מההגנה שלנו, ו-97% מהלקוחות שלנו עוברים בדיקות אבטחה בניסיון הראשון.
כיצד ליישם הגנה מפני צילום מסך באנדרואיד (FLAG_SECURE)
- הוסף את הדגל FLAG_SECURE במתודת
onCreateשל ה-Activity שלך לפניwindow.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE). שיטה מוכחת זו מתועדת בתיעוד המפתחים של אנדרואיד:
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE) -
בדוק על מספר מכשירים עם אנדרואיד 10+ כדי לוודא שהדגל פועל. FLAG_SECURE פועל על כל גרסאות אנדרואיד מ-4.0. דגל זה מונע מכלי מערכת לצלם מסך של החלון וחוסם לכידה דרך
MediaProjection. חשוב: FLAG_SECURE חל על כל ה-Activity, כך שבאפליקציות מבוססות Fragment על Activity יחיד, כל האפליקציה מוגנת. אזהרה: מצלמה פיזית המצלמת את המסך אינה חסומה — תקורה זו אינה ניתנת לפתרון תוכנתי. לפי סטטיסטיקות הפרויקטים שלנו, ב-80% מהמקרים FLAG_SECURE יחיד לכל המסכים מספיק. -
להגנה סלקטיבית (רק על מסכים מסוימים), החל את הדגל רק על אותם Activities. FLAG_SECURE קל פי 5 ליישום מאשר גישת ה-overlay ב-iOS.
אסטרטגיות הגנה מפני צילום מסך ב-iOS
iOS אינו מספק מקבילה ישירה ל-FLAG_SECURE. הגישה הסטנדרטית היא תגובה לאירוע צילום המסך, לא חסימתו.
זיהוי צילום מסך
NotificationCenter.default.addObserver(
forName: UIApplication.userDidTakeScreenshotNotification,
object: nil,
queue: .main
) { _ in
// логировать, показать предупреждение, инвалидировать сессию
}אבל זה בדיעבד: צילום המסך כבר צולם. חלופה היא NotificationCenter.default.addObserver( forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: .main ) { _ in // логировать, показать предупреждение, инвалидировать сессию } , אשר מופעל כאשר המסך נתפס (כולל AirPlay ו-QuickTime). אז ניתן להסתיר תוכן באופן מונע:
NotificationCenter.default.addObserver(
forName: UIScreen.capturedDidChangeNotification,
object: nil,
queue: .main
) { [weak self] _ in
self?.sensitiveView.isHidden = UIScreen.main.isCaptured
} Overlay בעת כניסה לרקע
כדי להגן על התצוגה המקדימה במחליף האפליקציות, הצג placeholder על UIScreen.capturedDidChangeNotification:
func sceneWillResignActive(_ scene: UIScene) {
privacyWindow?.isHidden = false
}
func sceneDidBecomeActive(_ scene: UIScene) {
privacyWindow?.isHidden = true
}זה סטנדרטי באפליקציות פינטק ב-iOS. ב-95% מהמקרים, ה-overlay פותר את הבעיה של צפייה בתוכן דרך מחליף האפליקציות.
שדה טקסט מאובטח
עבור שדות טקסט רגישים, השתמש ב-NotificationCenter.default.addObserver( forName: UIScreen.capturedDidChangeNotification, object: nil, queue: .main ) { [weak self] _ in self?.sensitiveView.isHidden = UIScreen.main.isCaptured } . iOS מטשטש אוטומטית את התוכן של שדות כאלה בצילומי מסך ובמחליף האפליקציות.
כיצד Overlay ו-capturedDidChange פועלים בפועל
שקול מקרה: אפליקציית פינטק המציגה יתרת חשבון והיסטוריית עסקאות. באנדרואיד, פשוט הוסף FLAG_SECURE ל-sceneWillResignActive. ב-iOS, הירשם ל-func sceneWillResignActive(_ scene: UIScene) { privacyWindow?.isHidden = false } func sceneDidBecomeActive(_ scene: UIScene) { privacyWindow?.isHidden = true } והסתר את ה-isSecureTextEntry = true עם היתרה כאשר מתגלה צילום מסך. בנוסף, בעת כניסה לרקע, הצג placeholder עם הלוגו. כתוצאה מכך, לא צילומי מסך ולא הקלטות מסך חושפים נתוני משתמש. פתרון זה עבר בדיקת אבטחה והתקבל בחנות בניסיון הראשון.
מסגרות חוצות-פלטפורמות: React Native ו-Flutter
ב-React Native, השתמש ב-MainActivity עבור אנדרואיד; עבור iOS, עטף את ה-overlay וההודעות במודול native. ב-Flutter באנדרואיד, השתמש ב-capturedDidChangeNotification, ב-iOS — ערוץ פלטפורמה עבור ה-overlay.
השירות שלנו: תהליך, תוצרים ותמחור
תהליך: מבדיקה ועד פריסה
| שלב | מה אנחנו עושים | תוצאה |
|---|---|---|
| ניתוח | זיהוי מסכים עם נתונים רגישים | רשימת Activities/מסכים מוגנים |
| עיצוב | בחירת אסטרטגיה: FLAG_SECURE, overlay, capturedDidChange | תוכנית יישום |
| יישום | קוד הגנה native + עדכון UX (הודעות) | Pull Request |
| בדיקות | בדיקה על כל המכשירים וגרסאות מערכת ההפעלה | דוח בדיקות |
| פריסה | הגשה לחנות עם מטא-דאטה מעודכן | Release |
מה כולל שירות ההגנה מפני צילום מסך שלנו
- בדיקת הארכיטקטורה הנוכחית לפרצות צילום מסך.
- הגדרת FLAG_SECURE לאנדרואיד עם דגלים ספציפיים לאזור.
- יישום overlay placeholder ל-iOS והרשמה ל-capturedDidChange.
- אינטגרציה עם ה-CI/CD שלך (TestFlight, Firebase App Distribution).
- תיעוד לתחזוקה ועדכונים.
- אחריות לפעולה תקינה על מכשירים עם iOS 15+ ואנדרואיד 10+.
תוצרים כלולים
- תיעוד מפורט של השינויים שיושמו, כולל דיאגרמות ארכיטקטורה.
- גישה למאגר קוד המקור עם pull request ממוזג.
- מפגש הדרכה של 30 דקות לצוות הפיתוח שלך.
- תמיכה שוטפת למשך חודש לאחר הפריסה עם תעדוף תגובה.
התמחור מתחיל ב-$1,500 עבור הגנה בסיסית על פלטפורמה אחת, עם הנחות לפרויקטים מרובים והיקפים מותאמים אישית. יישום מלא עולה בין $1,000 ל-$3,000 בהתאם למורכבות הפלטפורמה. הלקוחות שלנו חוסכים בדרך כלל 20-30% בהשוואה לפיתוח פנימי.
השוואת גישות
| פרמטר | אנדרואיד (FLAG_SECURE) | iOS (overlay + הודעה) |
|---|---|---|
| חסימת צילום מסך | כן | לא, רק תגובה |
| הגנה מפני הקלטת מסך | לא | חלקית (capturedDidChange) |
| הגנה על תצוגה מקדימה במחליף משימות | כן (אוטומטי) | כן (overlay) |
| השפעה על ביצועים | מינימלית | מינימלית |
| מורכבות יישום | שורת קוד אחת | ~50 שורות + overlay |
| עלות פיתוח | כלולה בפיתוח אנדרואיד | תוספת של 1-2 ימים |
קבל ייעוץ
בקש בדיקה של האפליקציה שלך — ננתח מסכים פגיעים ונציע פתרון אופטימלי. צור קשר כדי לדון בפרטים ולוחות זמנים. הערכת הפרויקט אורכת יום אחד. יישום מלא עולה בין $1,000 ל-$3,000 בהתאם למורכבות הפלטפורמה.







