بتـــــاريخ : 1/13/2011 7:30:58 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1217 0


    لا من شاف ولا من دري

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : تركي العسيري | المصدر : www.al-asiri.com

    كلمات مفتاحية  :

    عندما كنا أطفالا وبدأنا برمجة مواقع ASP.NET علمونا بالمدرسة ان نصوص الاتصال Connection Strings (والخاصة بقواعد البيانات) تحفظ في ملف التهيئة web.config:


    <configuration>
          ...
          ...
          <connectionStrings>
                <add name="MyConnectionString" connectionString="Data Source=(local);
                Initial Catalog=MyDatabase;Integrated Security=True"
                providerName="System.Data.SqlClient" />
          </connectionStrings>
          ...
          ...
    </configuration>


    بالرغم من ان هذا الأسلوب هو المعيار الرسمي التي تصرح به Microsoft وتتعهد بأن الملف web.config لا يمكن الوصول له إلا من خلال مسئول الخادم Server Administrator، إلا اني شخصيا لم أكن افضل إتباعه خوفا على نص الاتصال من التسرب، خاصة إن كان الخادم SQL Server في جهاز غير الجهاز المستضيف لموقعي Application Server. لذلك كنت أطبق وسائل متقدمة للتشفير التي لا تتبع معيار موحد لتطبيقات ويب Web Applications.

    إن كنت من الشخصيات التي تسمع كلام ماما وبابا كثيرا، فهنيئا لك! فمع ASP.NET 2.0 أصبحت عملية تشفير نص الاتصال تتم بسهولة شديدة جدا جدا، فبعد ان تكتب نص الاتصال كما في المثال السابق، أضف الوسم protectedData في الملف web.config:

    <protectedData>
          <protectedDataSections>
                <add name="connectionStrings" provider="RSAProtectedConfigurationProvider" />
          </protectedDataSections>      
    </protectedData>

    نضيف في الوسم protectedData الوسوم التي نود نشفيرها في الملف web.config (لست بحاجة لاخبارك انه لا يشترط ان تكون خاصة لنصوص الاتصال)، وقد حددت الوسم connectionStrings الذي كتبناه سابقا. والان قم بتشغيل موجة الاوامر Command Prompt (التي تحمل الاسم SDK Command Prompt في المجموعة Visual Studio من قائمة ابدا)، واستخدم الاداة aspnet_regiis.exe لبدء عملية التشفير (مع تحديد الوسم التي تود تشفير محتوياته):

    aspnet_regiis.exe -pe connectionStrings -app /mysite


    بخصوص mysite فهو يمثل اسم المجلد الافتراضي Virtual Directory في الخادم IIS والخاص بموقعك.

    عندما تعود الى الملف web.config ستلاحظ ان قسم نصوص الاتصال connectionStrings تم تشفيرها:

    <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
          ...
          ...
          <CipherData>
                 <CipherValue>E7zEtEE9NSkivxVQThiEbebrN6cjeB ... qnApgw07B/bOSYc=</CipherValue>
           </CipherData>
          ...
          ...
    </connectionStrings>


    أخيرا، ان أردت استرجاع الملف web.config والغاء التشفير، فاستخدم الاداة aspnet_regiis.exe ايضا ولكن مع التابع pd- بدلا من pe-


    من الان وصاعدا ليس لدي (ولديك انت ايضا) أي حجة في عدم سماع كلام ماما وبابا عندما اوصونا بحفظ نصوص الاتصال في الملف web.config.

    -- تركي


    كلمات مفتاحية  :

    تعليقات الزوار ()