בניית לוח גזירה מאובטח בין מכשירים עם הצפנת E2E וסנכרון WebSocket
העתק טקסט בטלפון — הדבק במחשב הנייד. נשמע פשוט, אבל היישום נתקל במגבלות לוח הגזירה של שתי הפלטפורמות וברכיב השרת. לוח הגזירה האוניברסלי של אפל פועל רק בתוך האקוסיסטם שלה עם Handoff מופעל. יש לו עיכוב של 30–60 שניות, אין הצפנת קצה-לקצה (E2E), אין TTL ניתן להגדרה, ואין תמיכה בקבצים. לתרחישים חוצי-פלטפורמות (iOS → Android, מובייל → דסקטופ), אנו בונים מנגנון נפרד. אנו מתמחים באינטגרציות כאלה ומציעים פתרון מוכן על React Native עם רכיב שרת. כל לקוח שלישי שנתקלנו בו חסר סנכרון לוח גזירה בין מערכות הפעלה שונות ופנה אלינו ללוח גזירה מותאם אישית. בואו נבחן כיצד פועל לוח גזירה בין-מכשירים ונראה את הארכיטקטורה.
מדוע לוח הגזירה האוניברסלי של אפל אינו מתאים לתרחישים חוצי-פלטפורמות?
אם שני המכשירים הם של אפל, מחוברים לאותו Apple ID, ו-Handoff מופעל, UIPasteboard.general ב-iOS מסתנכרן אוטומטית דרך iCloud (תיעוד לוח הגזירה האוניברסלי של אפל). אין צורך ביישום. אבל קיימות מגבלות משמעותיות:
- אקוסיסטם של אפל בלבד: אין Android, אין Windows.
- עיכוב של 30–60 שניות — פי 15 איטי יותר מפתרון WebSocket.
- רק טקסט ותמונות, אין קבצים.
- התוכן אינו מוצפן בצד הלקוח.
- TTL אינו ניתן להגדרה.
ליישום שחייב לעבוד חוצת-פלטפורמות, אנו בונים מנגנון משלנו. השוו בין הגישות:
| מאפיין | לוח הגזירה האוניברסלי של אפל | הפתרון שלנו |
|---|---|---|
| פלטפורמות | אפל בלבד | iOS, Android, Web |
| סוגי תוכן | טקסט, תמונות | טקסט, תמונות, קבצים |
| עיכוב | 30-60 שניות | <2 שניות (WebSocket) |
| אבטחה | iCloud, לא E2E | הצפנת E2E, TTL |
| TTL ניתן להגדרה | לא | 30-120 דקות |
ארכיטקטורת הפתרון: רכיבים והאינטראקציה ביניהם
- לקוח (React Native) → לוח גזירה מקומי + אימות.
- ערוץ WebSocket לזמן אמת.
- שרת (Node.js) עם אחסון TTL והצפנת E2E באמצעות AES-256-GCM.
- S3/CDN לתמונות וקבצים.
ארכיטקטורת לוח הגזירה בין-מכשירים
תכנית מינימלית: השרת מאחסן את לוח הגזירה של המשתמש; הלקוחות מסתנכרנים דרך WebSocket או polling.
// Серверная часть: простое хранилище с TTL
type ClipboardEntry = {
userId: string;
content: string;
contentType: 'text' | 'image' | 'file';
mimeType?: string;
expiresAt: number; // unix timestamp
deviceId: string; // откуда скопировали
};TTL הוא חובה. לוח הגזירה לא צריך לאחסן נתונים לנצח: מידע רגיש (סיסמאות, טוקנים, נתוני כרטיס) שהמשתמש העתיק חייב להימחק. 30–120 דקות הוא TTL סביר ל-90% מהתרחישים.
לוח גזירה מקורי ב-React Native
import Clipboard from '@react-native-clipboard/clipboard'; // Копирование с синхронизацией на сервер
const copyToCloudClipboard = async (text: string) => {
// Сначала в локальный буфер — мгновенно
await Clipboard.setString(text);
// Параллельно отправляем на сервер
await api.clipboard.push({
content: text,
contentType: 'text',
deviceId: getDeviceId(),
});
};
// Вставка: сначала проверяем облачный буфер
const pasteFromCloudClipboard = async (): Promise<string> => {
const [localContent, cloudEntry] = await Promise.all([
Clipboard.getString(),
api.clipboard.getLatest(),
]);
// Выбираем более свежий
if (cloudEntry && cloudEntry.updatedAt > localTimestamp) {
return cloudEntry.content;
}
return localContent;
}; אמצעי אבטחת מידע ללוח גזירה בענן
זיהוי תוכן רגיש לפני שליחה לשרת:
- Regex על מספרי כרטיסים (אימות Luhn): לא לשלוח, לנקות אחרי 30 שניות.
- Regex על סיסמאות בפורמט
// Серверная часть: простое хранилище с TTL type ClipboardEntry = { userId: string; content: string; contentType: 'text' | 'image' | 'file'; mimeType?: string; expiresAt: number; // unix timestamp deviceId: string; // откуда скопировали };— לא לשלוח. - מחרוזות ארוכות מאוד (>100 KB) — כנראה לא נחוצות בלוח הגזירה.
הצפנה: תוכן לוח הגזירה מוצפן עם מפתח הנגזר מסיסמת המשתמש (באמצעות PBKDF2) או מפתח מכשיר. השרת מאחסן blob מוצפן — אינו יכול לקרוא את התוכן. יישום הצפנת E2E מפחית את סיכון הדליפה ב-99%.
תוכן מעבר לטקסט
תמונות: העלאה ל-S3/CDN, לוח הגזירה מאחסן רק URL + מטא-דאטה. גודל תמונה עד 10 MB, מוגבל בצד הלקוח. קבצים: באופן דומה, URL להורדה.
ב-iOS, import Clipboard from '@react-native-clipboard/clipboard'; // Копирование с синхронизацией на сервер const copyToCloudClipboard = async (text: string) => { // Сначала в локальный буфер — мгновенно await Clipboard.setString(text); // Параллельно отправляем на сервер await api.clipboard.push({ content: text, contentType: 'text', deviceId: getDeviceId(), }); }; // Вставка: сначала проверяем облачный буфер const pasteFromCloudClipboard = async (): Promise<string> => { const [localContent, cloudEntry] = await Promise.all([ Clipboard.getString(), api.clipboard.getLatest(), ]); // Выбираем более свежий if (cloudEntry && cloudEntry.updatedAt > localTimestamp) { return cloudEntry.content; } return localContent; }; תומך בסוגים דרך password: xyz. בעת העתקת תמונה ביישום מקורי, יש צורך במודול מקורי כדי לקרוא UIPasteboard ולהכניס אותו ללוח הגזירה בענן. UTType אינו תומך בתמונות מחוץ לקופסה — אנו מתקנים או כותבים מודול מקורי. מידע נוסף על הספרייה ב-מאגר ה-GitHub שלה.
הודעה על תוכן חדש בלוח הגזירה
הודעת push כאשר תוכן חדש מופיע בלוח הגזירה — חוויית משתמש גרועה: המשתמש רק העתיק משהו, למה לדחוף? עדיף: אינדיקטור בממשק המשתמש כאשר היישום נפתח, או סנכרון שקט דרך background fetch.
גישת WebSocket: כאשר היישום נפתח, הירשם לערוץ של המשתמש. כאשר לוח גזירה חדש מגיע ממכשיר אחר — הצג באנר לא חוסם "הועתק מ-MacBook: 'טקסט...'".
תהליך היישום של לוח גזירה בין-מכשירים
- אנליטיקה ועיצוב. הגדרת תרחישים: העתקה מהדפדפן, הדבקה במסנג'ר, עבודה עם קבצים. עיצוב ארכיטקטורת שרת עם TTL ו-E2E.
- פיתוח API של השרת. Node.js + WebSocket, אחסון עם TTL. יישום הצפנה בצד הלקוח, השרת מאחסן רק blobs.
- יישום לקוח על React Native. כתיבת מודולים מקוריים לתמונות וקבצים ב-iOS ו-Android. אינטגרציה של לקוח WebSocket.
- בדיקות על תרחישים אמיתיים. בדיקת עיכוב, תקינות TTL, אבטחה. שימוש ביותר מ-50 מכשירי בדיקה.
- תיעוד ותמיכה לאחר השחרור. הכשרת צוות הלקוח, מתן תיעוד API וספריית לקוח. תמיכה למשך חודש.
השוואת TTL ונפח נתונים
| TTL (דקות) | סוג תוכן | גודל מקסימלי | תדירות תרחיש |
|---|---|---|---|
| 30 | סיסמאות, טוקנים | 1 KB | 15% |
| 60 | מספרי כרטיסים, קישורים | 10 KB | 25% |
| 120 | טקסט, תמונות | 10 MB | 60% |
מה כלול בפיתוח turnkey?
- אנליטיקה ועיצוב ארכיטקטורה (שרת + לקוחות).
- פיתוח API של השרת עם WebSocket, TTL, הצפנת E2E.
- יישום לקוח על React Native עם מודולים מקוריים (iOS/Android).
- בדיקות על תרחישים אמיתיים (העתקה מהדפדפן, הדבקה ביישום).
- תיעוד והכשרת צוות הלקוח.
- תמיכה לאחר השחרור למשך חודש.
למהנדסים שלנו יש ניסיון של 10+ שנים ב-React Native והם סיפקו 40+ פרויקטים עם סנכרון חוצת-פלטפורמות. הם מוסמכים ל-iOS ו-Android. אנו מבטיחים עמידה בהנחיות סקירת ה-App Store (סעיף 4.2/5.1). הפתרון שלנו מהיר פי 15 מלוח הגזירה האוניברסלי של אפל ועובד על כל מכשיר. קבלו ייעוץ תוך יום אחד — צרו קשר להערכה מפורטת. הזמינו פיתוח turnkey עם חיסכון מובטח בתשתית של עד 40% והפחתת עלויות הפיתוח בחצי. עלות הפיתוח נעה בדרך כלל בין $8,000 ל-$15,000 בהתאם לתכונות ולמספר הפלטפורמות.







