سؤال

في تطبيق winforms الخاص بي، أقوم بتجزئة سلسلة الاتصال على المستوى المحلي.

ولكن هنا بضعة أسئلة.

بعد أن يقوم تطبيقي بفك تشفير سلسلة الاتصال، يتم إرسال معلومات سلسلة الاتصال بنص واضح؟وبما أن تطبيقي مثبت محليًا، فمن الممكن أن يكون الرجل الموجود في المنتصف هو أي مستخدم؟

كيف يمكنني حماية سلسلة الاتصال، بجانب خيار "فرض التشفير" الذي يتطلب شهادة إضافية؟

هل كانت مفيدة؟

المحلول

لديك فقط عدد محدود من الأساليب هنا فيما يتعلق بالحفاظ على سلسلة الاتصال الخاصة بك آمنة ومأمونة.

أحد الخيارات هو أنه إذا تم تخزين سلسلة الاتصال الخاصة بك داخل ملف web.config أو app.config (لتطبيقات الويب وWindows، على التوالي)، فيمكنك تشفير القيمة.إليك بعض الروابط التي توضح بالتفصيل كيفية القيام بذلك:

تشفير قيم Web.Config في ASP.NET 2.0

تشفير سلاسل الاتصال في ملفات .config VS 2005

بالطبع، كما قلت بحق، قد لا يحقق هذا الأمان الذي تريده، نظرًا لأن التطبيق قد يكون قيد التشغيل على جهاز المستخدم، وبالتالي ملف app.config (حتى في حالة مشفرة) والتشفير/فك التشفير المرتبط به ستكون المفاتيح متاحة أيضًا على جهاز المستخدم.ويمكن لمستخدم واسع المعرفة ومغامر أن يتمكن بعد ذلك من الوصول إلى سلسلة الاتصال "النص العادي" الخاصة بك.

IMHO، إحدى أفضل الطرق لمنع المستخدمين من رؤية سلسلة اتصال قاعدة البيانات الخاصة بك هي عدم منحها لهم أبدًا في المقام الأول، سواء كانت مشفرة أم لا.قد يتطلب هذا أن تطبيق نماذج Windows الخاص بك لا يتصل مباشرة بقاعدة البيانات (باستخدام سلسلة اتصال)، بل يتحدث مباشرة إلى (على سبيل المثال) خدمة ويب.

بالطبع، ستمنح تطبيق نموذج Windows عنوان URL الذي يمكنه من خلاله الوصول إلى خدمة الويب، ولكن بعد ذلك سيتم تقييد استخدام خدمة الويب هذه والتحكم فيها من خلال السماح فقط بالوصول باستخدام مجموعة اسم مستخدم/كلمة مرور محددة للمستخدم.

بهذه الطريقة، يمكنك استضافة خدمة الويب (ليس من الضروري أن تكون خدمة ويب - يمكن أن يكون تطبيقًا عن بعد سيتواصل معه تطبيق نموذج Windows الخاص بك .NET عن بعد أو صندوق رأس المال العامل) على خادم/جهاز منفصل فعليًا يفعل تمتع بالتحكم الكامل في هذا الجهاز وحمايته أمن محيط.

ستكون التطبيقات والخدمات التي تقوم بتشغيلها على هذا الجهاز الآمن هي التي يمكنها الوصول إلى سلسلة اتصال قاعدة البيانات، ولا يلزم أبدًا الكشف عن سلسلة الاتصال هذه خارج محيط هذا الجهاز، وبالتالي الحفاظ عليها آمنة تمامًا (بافتراض المحيط المذكور أعلاه الأمن موجود وفعال).

بالطبع، تنفيذ كل هذا سيعني بالتأكيد تغييرات معمارية ضخمة في تطبيقك، والتي، اعتمادًا على حجم وطبيعة التطبيق الخاص بك، قد تكون أو لا تكون جديرة بالاهتمام، ومع ذلك، فإن الطريقة الوحيدة لتأمين سلسلة الاتصال الخاصة بك حقًا من المستخدم (أو جهاز المستخدم) هو التأكد من عدم توفره أبدًا (في شكل مشفر أو غير مشفر) للمستخدم (أو جهاز المستخدم).

بمجرد وضع سلسلة الاتصال على جهاز المستخدم، حتى في حالة مشفرة، فإنك تحتاج إلى منح نفس الجهاز القدرة على فك تشفير سلسلة الاتصال المشفرة، وهناك الحلقة الضعيفة في السلسلة والنقطة التي عندها ( إلى مستخدم واسع الحيلة) يمكن تحديد سلسلة اتصال النص العادي الخاصة بك.يمكنك إلغاء تحميل فك تشفير سلسلة الاتصال المشفرة إلى جهاز آخر (آمن)، ولكن هذا مجرد شكل مختلف لآلية خادم العميل المذكورة سابقًا حيث يتم تنفيذ الجزء الذي يظل آمنًا (مفتاح فك التشفير، سلسلة الاتصال وما إلى ذلك). على جهاز مختلف تحت سيطرتك الآمنة.

نصائح أخرى

وأنت لا يمكن أن تحمي سلسلة الاتصال. ما يمكنك القيام به هو الاتصال عبر SSL قناة آمنة.

هذه الصفحة في MSDN توضح كيفية تنفيذ SSL للاتصال:

http://support.microsoft.com/kb/316898

وهذا واحد يصف مصادقة SQL (لASP.NET):

http://msdn.microsoft.com/en-us/library/ ff648340.aspx

ويبدو أنك فقط حقا بحاجة لتشفير اسم المستخدم وكلمة المرور؟ وفي هذه الحالة، يجب أن يكون مصادقة Windows خيار (على الرغم من أنني في كثير من الأحيان مشاكل في الحصول على عمل بالنسبة لي)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top