تقنية المعلومات

شركة تيم سيرف للخدمات وحلول الإنترنت المتكاملة

Google

العودة   تقنية المعلومات > ::::: تقنية المعلومات التطويرية::::: > تطوير المواقع > تقنيات مبرمجى ASP.NET

تقنيات مبرمجى ASP.NET يناقش هذا المنتدى برمجة صفحات ويب لتعمل من جهة السيرفر باستخدام منصة الدوت نت باحدى لغاتها المختلفة VB.NET C# J# C++/CLI Delphi .NET ويناقش القسم أيضا كل مايتعلق ببرمجة ال XML Web Services وطرق تصميمها



إضافة رد
 
LinkBack LinkBack أدوات الموضوع انواع عرض الموضوع
  #1 (permalink)  
قديم 2008-11-13, 10:40 PM
:: إدارة تقنية المعلومات ::
 
تاريخ التسجيل: 01-11-2008
المشاركات: 74
افتراضي كيف تشفر و تفك تشفير ملف الـ Web.Config باستخدام السي#

بسم الله الرحمن الرحيم ...

من الأمور المهمة في لغة ASP.NET 2.0 ملف الـ Web.Config و الذي يقوم بتخزين التعريفات المهمة لتطبيق الويب.

و من أشهر و أهم المعلومات التي تخزن فيه هي الـ ConnectionString و التي يخزن بداخلها اسم المستخدم و كلمة مرور قواعد البيانات و عنوان سيفر قاعدة البيانات. كما أنه من الأمور المهمة التي تخزن في ملف الـ Web.Config معلومات الـ SMTP Server.

و بالرغم من أن الـ ASP.NET يتكفل بحماية ملف الـ Web.Config و لكن ماذا لو نسينا أن تغلق وصول الـ anonymous للـ FTP مثلاً؟!! سوف يصل بشكل مباشر إلى الـ Web.Config و يقرأه عن طريق الـ Notepad و سوف يجد جميع معلوماتنا الفيمة بداخله.

لذلك كان من أفضل التطبيقات في حماية ملف Web.Config هو تشفير الأجزاء المهمه.



سوف ننشئ الـ Methods التالية لتشفير و فك تشفير هذه الاجزاء بلغة السي#.

كود PHP:
private void ProtectSection(string sectionNamestring provider)
    {   
        
Configuration config 
            
WebConfigurationManager.
                
OpenWebConfiguration(Request.ApplicationPath);  

        
ConfigurationSection section =
                     
config.GetSection(sectionName); 

        if (
section != null &&
                  !
section.SectionInformation.IsProtected)
        {
            
section.SectionInformation.ProtectSection(provider);
            
config.Save();
        }
    } 

    private 
void UnProtectSection(string sectionName)
    {
        
Configuration config =
            
WebConfigurationManager.
                
OpenWebConfiguration(Request.ApplicationPath); 

        
ConfigurationSection section =
                  
config.GetSection(sectionName); 

        if (
section != null &&
              
section.SectionInformation.IsProtected)
        {
            
section.SectionInformation.UnprotectSection();
            
config.Save();
        }
    } 
في الدالة ProtectSection تأخذ هذه الدالة قيمتين هي sectionName و provider.

الـ sectionName تأخذ القسم المراد تشفيره مثلاً "appSettings" و المتغير الثاني provider يأخذ طريقة التشفير و يوجد عندنا طريقتين هما:
The Windows Data Protection API (DPAPI) Provider(DataProtectionConfigurationProvider)
RSA Protected Configuration Provider(RSAProtectedConfigurationProvider)

فالنوع الأول يقوم بالتشفير بناءً على مفتاح الجهازmachine key و لذلك عند نقل الكود إلى جهاز آخر لن يصبح التشفير فعال.

و النوع الآخر يستخدم مفتاح الـ RSA و هنا سوف استخدم النوع الأول .

الآن لنضع 2 Buttons في صفحة الـ ASP.NET. و نكتب بداخلها الكود التالي للتشفير:

كود PHP:
ProtectSection("appSettings","DataProtectionConfigurationProvider"); 
و لفك التشفير:

كود PHP:
UnProtectSection("appSettings"); 
فلو فرضنا انه يوجد لدينا هذا الجزء في ملف الـ Web.Config:

و الذي يحتوي على hسم المستخدم و كلمة المرور.

كود PHP:
<?xml version="1.0"?> 


<configuration>
  <appSettings>
    <add key="userName" value="myUser" />
    <add key="password" value="myPass" />
  </appSettings> 
 <system.web>
و الآن و بعد التشفير سوف يكون شكل الملف:

كود PHP:
<?xml version="1.0"?> 


<configuration>
  <appSettings configProtectionProvider="DataProtectionConfigurationProvider">
    <EncryptedData>
      <CipherData>
        <CipherValue>AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAeqpnrspy5EWNYcNck7YWEgQAAAACAAAAAAADZgAAqAAAABAAAAA12J8TxeAXP5oTR3FRwzTUAAAAAASAAACgAAAAEAAAAD35nzw5BzWwX4kb/ba0k+/oAAAAWrmf/KLUkGMXbc24Un8GXU/q3BLDnuzemCXU2ooqlXVVRCJdOSxU/A34EajaAmPZH/hJY1lDHoqSL2yv69R7Ld2ebIMyA94+gpGJ+5BttQhaUrD8yi19D7j29JOtX1gZ+6dkLVLANI4zU4i46orH7Syy+DOdwaeJ5ZNrj60hu7bSzwMgq5QEKXJ0G/D8XwJY7LD2pdpzls+P7fheqYH5OXFevJKoJWUco+isMdrppE5zPnIF9zD2pmLFU6bUH0maBDjbBnP3QCu+9R3SlQ5ELVQAKx+ThCj3xBvh5P1cUBMaaFZtEaX3EBQAAABl+Fga/ikPCJAGBh1NQNICVKh3Yg==</CipherValue>
      </CipherData>
    </EncryptedData>
  </appSettings> 

 <system.web>
و لابد من العلم أن الأجزاء التالية لا يمكن تشفيرها في الـ Web.Config:
processModel
runtime
mscorlib
startup
system.runtime.remoting
configProtectedData
satelliteassemblies
cryptographySettings
cryptoNameMapping
cryptoClasses

طبعاً الجزء الأجمل أنه عندما تريد قراءة قيمة معينة في ملف الـ Web.Config مثلاً الـ connectionString لن تقوم بفك التشفير و لكن الـ ASP.NET سوف يقوم به نيابة عنك و لن تضطر لتغيير الكود.

اتمنى للجميع الاستفاده من الموضوع
رد مع اقتباس
قديم 2008-11-25, 06:10 PM   المشاركة رقم: 2 (permalink)
الكاتب
:: Mohamed Oraby ::
:: إدارة تقنية المعلومات ::
 
الصورة الرمزية M.ORaBY
تاريخ التسجيل : 20-10-2008
رقم العضوية : 3
الإقامة : مصر
الهواية : الفوتوشوب
المواضيع : 83
الردود : 213
مجموع المشاركات : 296
مشاركتي في اليوم بمعدل: 0.43
العمر : 21
معدل التقييم : 10
معدل تقييم المستوى :
آخر تواجد : ()
الإتصال M.ORaBY غير متواجد حالياً


كاتب الموضوع : IM.com المنتدى : تقنيات مبرمجى ASP.NET
افتراضي

جزاك الله كل خير












التوقيع

  • إسم الشركة : تيم سيرف للخدمات وحلول الانترنت المتكاملة
  • صاحب الشركة : إسلام عطية السيد
  • مقر الشركة : الزقازيق - جمهورية مصر العربية
  • خدمات الشركة : استضافة - ريسلرات - سيرفرات - VPS - SMS - ADSL - برمجة - تصميم - ديجي شات - راديو
  • هاتف الشركة : 0020552311408/0020173392593
  • بريد الشركة : oraby_sales@teamserv.com
  • روابط الشركة : www.teamserv.com.eg
  • تذاكر الدعم الفني : www.support.teamserv.com
  • رقم السجل التجاري: شركة رسمية مسجلة برقم 118068
عرض البوم صور M.ORaBY   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع


الساعة الآن 02:39 AM بتوقيت مسقط


Powered by vBulletin® Copyright ©2000 - 2010, Jelsoft Enterprises Ltd
جميع الحقوق محفوظة لـتقنية المعلومات العربية للمساعدة والتدريب 2010 ©