الأمان
النسخة المختصرة: رموز Salesforce الخاصة بك لا تغادر جهازك أبداً، ونحن لا نتصل أبداً ببياناتك. تطبيق سطح المكتب مصمم ليكون محلياً أولاً (local-first)، ولوحة الحساب تخزن فقط ما تحتاجه لمحاسبتك، ولا يوجد أي مكان يقوم بالتحليلات.
OAuth 2.0 مع PKCE (S256)
Section titled “OAuth 2.0 مع PKCE (S256)”عندما تقوم بربط منظمة Salesforce، يقوم تطبيق سطح المكتب بتشغيل تدفق Salesforce OAuth 2.0 Web Server Flow القياسي — مع PKCE، باستخدام طريقة تحدي رمز SHA-256.
ما يعنيه هذا من الناحية العملية:
- يقوم التطبيق بتوليد code verifier (متحقق من الرمز) عشوائي مشفر بحجم 32 بايت لكل محاولة تسجيل دخول.
- يقوم بحساب تجزئة SHA-256 لهذا المتحقق ويرسل التجزئة كمعلمة
code_challenge. - تقوم Salesforce بإعادة التوجيه إلى
http://localhost:1717/oauth/callbackمع رمز تفويض. مستمع loopback لا يعرض أي شيء للشبكة أبداً. - يقوم التطبيق بتبادل الرمز بالرموز مباشرة مع Salesforce، مرسلاً المتحقق الأصلي كإثبات. نظامنا الخلفي (backend) ليس في منتصف هذا التبادل.
رمز التفويض المسروق عديم الفائدة بدون المتحقق المطابق، والذي لا يرسله التطبيق أبداً عبر الشبكة.
رموز التحديث المشفرة بـ AES-256-CBC
Section titled “رموز التحديث المشفرة بـ AES-256-CBC”يتم تخزين رموز التحديث محلياً، مشفرة باستخدام AES-256-CBC.
- يتم إنشاء مفتاح 256 بت مرة واحدة لكل تثبيت، من مصدر عشوائي آمن مشفر في نظام التشغيل، ويتم تخزينه في ملف
يسمى
.enc_keyفيApplication Supportبـchmod 600. - يتم إنشاء IV جديد بحجم 16 بايت لكل عملية كتابة ويتم إلحاقه بالنص المشفر.
- الملف المشفر هو
transflate.dbفي نفس الدليل. - رموز الوصول (Access tokens) لا تُكتب أبداً على القرص. فهي تعيش في ذاكرة العمليات فقط. عندما ينتهي التطبيق، تختفي؛ وفي المرة التالية التي تنقر فيها على الاتصال، يقوم التطبيق بإعادة تبادل رمز التحديث للحصول على رمز وصول جديد.
عدم وجود تتبع عن بعد (Zero telemetry)
Section titled “عدم وجود تتبع عن بعد (Zero telemetry)”يتم شحن تطبيق سطح المكتب بدون أي حزمة أدوات تحليلية (SDK) من أي نوع. لا PostHog، ولا Sentry، ولا Firebase Analytics، ولا Crashlytics، ولا Mixpanel، ولا Amplitude. يمكنك البحث في المصدر (Grep) إذا كنت لا تصدقنا.
المكالمات الشبكية الصادرة الوحيدة التي يقوم بها التطبيق هي:
- إلى Salesforce (OAuth + Metadata API)، على عنوان URL الخاص بالمثيل الذي اخترته أنت بنفسك.
- إلى مزود الذكاء الاصطناعي الذي اخترته (عبر نظام TranSFlator الخلفي).
- إلى
transflator-api.web.appللتحقق من الترخيص، ومعلومات حسابك، ونقطة نهاية الترجمة المجمعة — وكل ذلك عبر TLS.
لا شيء غير ذلك.
HTTPS في كل مكان
Section titled “HTTPS في كل مكان”كل مكالمة صادرة باستثناء OAuth loopback تستخدم TLS 1.2 أو
أعلى. الـ OAuth loopback هو نص عادي عبر 127.0.0.1 — هذه
حركة المرور حرفياً لا تغادر جهازك أبداً، لذا لا يضيف TLS شيئاً.
إعادة التحقق من الجلسة عند كل اتصال
Section titled “إعادة التحقق من الجلسة عند كل اتصال”في كل مرة تنقر فيها على اتصال لفتحه، يرسل التطبيق طلباً إلى
/services/data/v65.0/ للتحقق من صحة الجلسة. يتم اكتشاف الرموز
منتهية الصلاحية أو الملغاة فوراً وتطلب منك إعادة التفويض.
لا شيء يعمل ضد جلسة غير صالحة.
إحضار مفتاح مزود الذكاء الاصطناعي الخاص بك؟ لا.
Section titled “إحضار مفتاح مزود الذكاء الاصطناعي الخاص بك؟ لا.”يتعامل TranSFlator مع مفاتيح المزود في النظام الخلفي — لست بحاجة لصق مفتاح OpenAI أو مفتاح Google أو أي شيء مشابه. الفائدة هي وقت البدء (صفر)؛ والمقايضة هي أن جميع مكالمات الترجمة تمر عبر نظامنا الخلفي، وهو حد ثقة يجب أن تكون مرتاحاً معه. راجع سياسة الخصوصية لمعرفة ما يعنيه ذلك من الناحية العملية.
ماذا يوجد في ملف transflate.db؟
Section titled “ماذا يوجد في ملف transflate.db؟”connections— تسميات المنظمات المحفوظة، وعناوين URL للمثيل، ونوع البيئة، وطابع الاختبار الأخير.tokens— رموز التحديث المشفرة بـ AES، واحد لكل اتصال.workspace— نتائج فحص البيانات الوصفية المخزنة مؤقتاً.deployment_log— السجل المحلي لعمليات النشر التي بدأتها.
احذف هذا الملف لمسح كل شيء باستثناء .enc_key.
احذف .enc_key أيضاً وسيقوم التشغيل التالي بتوليد مفتاح جديد.