الإجراءات الأمنية لكتابة برامج الشبكة في دلفي
يوفر التحكم MIDAS الخاص بـ Delphi وسيلة مريحة للغاية لكتابة برامج الشبكة. باستخدام عناصر التحكم هذه، يمكنك كتابة برامج نظام العميل/الخادم على الشبكة المحلية، ويمكنك أيضًا إنشاء تطبيقات معالجة موزعة على الإنترنت بسهولة.
إحدى المشكلات المهمة المتعلقة ببرامج الشبكة هي الاعتبارات الأمنية. يتم نقل بعض البيانات الحساسة عبر الإنترنت وقد يتم اعتراضها بشكل غير قانوني، مما يتسبب في خسائر غير ضرورية. في عملية البرمجة الفعلية، اتخذت بعض التدابير الوقائية الفعالة، والتي سأقدمها هنا بإيجاز.
1. المبدأ
يوجد حاليًا العديد من الطرق لتشفير البيانات، والتي تلعب دورًا معينًا في حماية البيانات. ومع ذلك، إذا تم استخدام مفتاح ثابت أو تم إرسال المفتاح مع البيانات، فلا يمكن تحقيق نتائج سرية مرضية. من الناحية العملية، اكتشفت مجموعة من الطرق الرئيسية العشوائية في وضع "الطلب والاستجابة"، وهو أمر مُرضٍ للغاية للحفاظ على سرية كلمات المرور والبيانات.
عندما يبدأ برنامج العميل ويحاول إنشاء اتصال مع برنامج الخادم، يحصل برنامج العميل على سلسلة عشوائية تم إنشاؤها بواسطة برنامج الخادم من الخادم. سيستخدم النظام هذه السلسلة كمفتاح لنقل كلمة مرور وبيانات تسجيل دخول المستخدم. نظرًا لأن المفتاح يتم إنشاؤه بشكل عشوائي بواسطة برنامج الخادم، فإن المفتاح يختلف في كل مرة يقوم فيها العميل بتسجيل الدخول، مما يقلل بشكل كبير من احتمالية اعتراض كلمة المرور مما يؤدي إلى سرقة البيانات.
يمكن للخادم تقديم واجهة مخصصة في وحدة البيانات عن بعد، والتي تقوم بإرجاع سلسلة عشوائية. يجب أن تسجل وحدة البيانات البعيدة هذه السلسلة كمفتاح للمعالجة اللاحقة. يمكن إنشاء سلاسل عشوائية بعدة طرق. إن أبسط طريقة هي استخدام الدالة Random() لإنشاء رقم عشوائي ثم استخدام الدالة Format() أو IntToStr() لإنشاء سلسلة من هذا الرقم.
2. تدابير تسجيل دخول المستخدم
من أجل منع تصحيح أخطاء البرنامج بشكل غير قانوني وبالتالي تسريب كلمة المرور، يجب معالجة معلومات تسجيل دخول العميل على جانب الخادم، أو يمكن إضافة طبقة أمان خصيصًا لتكون مسؤولة عن تسجيل دخول العميل. يتم تخزين معلومات تسجيل الدخول الخاصة بالعميل في جدول معلومات العميل، بما في ذلك اسم المستخدم وكلمة المرور والأذونات وغيرها من المعلومات.
عندما يقوم برنامج العميل بتسجيل الدخول، فإنه يستدعي أولاً واجهة برنامج الخادم للحصول على سلسلة المفاتيح، ويستخدم هذا المفتاح لتشفير اسم المستخدم وكلمة المرور التي أدخلها المستخدم، ويرسل معلومات تسجيل الدخول إلى الخادم. يمكن أن تكون خوارزمية التشفير خوارزمية DES أو خوارزمية فعالة أخرى. بعد تلقي معلومات تسجيل الدخول، يقوم الخادم أولاً بفك تشفير معلومات تسجيل الدخول باستخدام المفتاح العشوائي الذي تم إنشاؤه وتسجيله مسبقًا، ثم يقارن المعلومات التي تم فك تشفيرها بالمعلومات الموجودة في جدول معلومات العميل المخزن لتحديد ما إذا كانت معلومات العميل قانونية وأذونات بيانات العميل استمتعت الخ
برنامج العميل لهذه العملية هو كما يلي:
strKey:=myRemoteSever.GetKey();
{استدعاء واجهة الخادم للحصول على مفتاح عشوائي}
اسم المستخدم:=Ency(strUserName
strKey);
{تشفير اسم المستخدم، Ency() هي خوارزمية التشفير}
كلمة المرور:=Ency(strPassword
strKey);
{تشفير كلمة المرور لتسجيل الدخول}
إذا كان myRemoteServer.LogIn(UserName
كلمة المرور) ثم {تسجيل الدخول}
يبدأ
{عملية}
نهاية؛
عملية تسجيل الدخول من جانب الخادم LogIn () هي كما يلي:
strUserName:=DeEncy(UserName
strKey);
{فك تشفير اسم المستخدم، DeEncy() هي خوارزمية فك التشفير}
strPassword:=DeEncy(Password
strKey);
{فك تشفير كلمة المرور لتسجيل الدخول}
{قاعدة بيانات الاستعلام}
إذا (تمرير) ثم
النتيجة:=صحيح
آخر
النتيجة:=خطأ؛
تجدر الإشارة إلى أنه يجب تعريف StrKey كمتغير عام في كل من برنامج الخادم وبرنامج العميل.
من أجل منع فتح جدول معلومات العميل خارج البرنامج وبالتالي تسريب كلمة المرور، يمكن تنفيذ إجراءات تشفير معينة على معلومات العميل، على سبيل المثال، يمكن إضافة كلمة مرور إلى جدول PARADOX، ويقوم برنامج الخادم بتوفيرها أولاً كلمة المرور عند الدخول إلى جدول معلومات العميل.
3. نقل البيانات
في تطبيقات الشبكة، يجب تشفير بعض البيانات الحساسة عند نقلها عبر الإنترنت. توفر آلية MIDAS الخاصة بـ Delphi طريقة لتشفير البيانات، حيث يمكنها تشفير بعض الحقول قبل نقل البيانات إلى العميل، ويمكنها أيضًا فك تشفير الحقول المقابلة للبيانات من العميل بعد تلقي طلب تحديث بيانات العميل قبل إرسالها إلى قاعدة البيانات. قم بإجراء تحديث. من أجل تحقيق هذه الأهداف، يمكنك إضافة كائن TPRovider أو TdataSetProvider إلى وحدة البيانات البعيدة لبرنامج الخادم، وتعيين خاصية DataSet لهذا الكائن إلى مجموعة البيانات المراد معالجتها. أضف الكود التالي إلى حدث OnGetData الخاص بـ Tprovider:
مع DataSet تفعل
يبدأ
بينما لا تفعل EOF
يبدأ
يحرر؛
SensitiveData.AsString :=
Ency(SensitiveData.AsString
strKey);
{تشفير البيانات الحساسة}
بريد؛
التالي؛
نهاية؛
نهاية؛
يمكن للكود أعلاه تشفير البيانات الحساسة قبل إرسالها إلى برنامج العميل.
وبالمثل، فإن إضافة بعض أكواد المعالجة إلى حدث OnUpdateData الخاص بـ Tprovider يمكن أن يؤدي إلى فك تشفير البيانات المرسلة من قبل العميل.
ما ورد أعلاه يقدم فقط المبادئ العامة لتنفيذ التدابير الأمنية لبرامج الشبكة، وعلى هذا الأساس، يمكن إضافة تدابير سرية أخرى لتحقيق تأثيرات سرية أفضل. على سبيل المثال، يمكن لبرنامج العميل استخدام أجهزة مساعدة محددة لزيادة الأمان. في تطبيق البطاقة الذكية، لا يطلب برنامج العميل من المستخدم إدخال اسم المستخدم وكلمة المرور عند تسجيل الدخول فحسب، بل يتحقق البرنامج أيضًا من نوع بطاقة IC ومحتواها المحدد في قارئ IC بهذه الطريقة، حتى لو كان تم تسريب كلمة المرور، لن يقوم أحد بتسجيل الدخول بانتحال الشخصية. وبطبيعة الحال، لا يوجد إجراء أمني آمن تمامًا، ويجب أن تتمتع التدابير الأمنية بنظام سرية صارم ودرجة عالية من الوعي بالسرية من جانب المستخدمين للحفاظ على السرية حقًا.