تشفير وفك تشفير الـ ConnectionString في ملف الـ Web.Config

14 أكتوبر 2017     280 مشاهدة    1 تعليق
تم النشر في #Security  #Web.Config  #ConnectionString 

البعض من مطوري الويب بإستخدام تقنية الـ ASP.NET قد لا يكونوا ملمين بفائده ملف الإعدادات Web.Config ولكن على الأقل كثير منهم يستخدوا هذا الملف لحفظ الـ ConnectionString الخاص بقواعد البيانات, وهذا ليس الغرض أو الفائده الوحيده من هذا الملف كما يظن البعض. لذا أنصح بالقراءة بعمق للتعرف على مدى أهمية هذا الملف بالنسبه لتقنية الـ ASP.NET.

أما اليوم فسوف اتطرق إلى كيفية تشفير الـ ConnectionString الموجود في ملف الـ Web.Config. قد يسأل البعض لماذا نريد أن نقوم بتشفير الـ ConnectionString؟!!

ببساطه فإن تشفير الـ ConnectionString هو أسلوب حماية للوصول لمعلومات قواعد البيانات, فإذا أحببت التعرف على كيفية التشفير أنصحك بمتابعة المقالة.

لنلقي نظرة على الـ ConnectionString التالي:

<connectionStrings>
     <add name="defaultConnectionString" connectionString="Data Source=MyServer; Initial Catalog=MyDB; Integrated Security=true"/>
</connectionStrings>

فسنلاحظ أن معلومات الإتصال بقاعدة البيانات واضح للجميع, لكن دعونا نلقي على إحدى الأدوات المفيدة والتي قد لا تكون معروفة لذا الكثير من مطورين الـ ASP.NET ألا وهي الأداة aspnet_regiis.exe.

فقم بفتح محرر الأوامر Developer Command Prompt بواسطه الخيار Run As Administrator, ومن ثم أكتب الأمر التالي:

aspnet_regiis.exe -pef "connectionStrings" "D:\MyWebsite"

حيث أن المسار D:\MyWebsite هو المجلد الذي يحتوي على ملف الـ Web.Config المراد تشفير الـ ConnectionString فيه.

وبعد تنفيذك للأمر السابق ستلاحظ أن الـ ConnectionString أعلاه تحول للتالي:

<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
        xmlns="http://www.w3.org/2001/04/xmlenc#">
        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
        <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
                <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
                <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                    <KeyName>Rsa Key</KeyName>
                </KeyInfo>
                <CipherData>
                    <CipherValue>SPmva1tQn5d8gVH/ri3Ysdi7KYfVlmFLp/i3LcmcIGyMDSYwirDxzIpNTyMiBsZDJQ958gb5lNkMDUHteYNa8JSguzNIS2IJjvRjdomttp8D4o7IRDt0XoZzlosNc2UUOx8i80z3OvulZE3cHM0uNyeB05Wa562wu9bAupP4Uo5VdiyzWGnAqEoZYG2sEa8JdmCCvrYECG/K7DVbK4gTyaqiODT2VPaaXcDd1wQ9X7svSQ65Kuk91fzfomEpBPakG0hBZjbzm5iA/DfYD3RWB69rEU8adh0plisb6pXz3WWKz5BO20WXusTewPv4dWocwGwClpiriJJNgOF2zuSv8A==</CipherValue>
                </CipherData>
            </EncryptedKey>
        </KeyInfo>
        <CipherData>
            <CipherValue>TGOkzpD37VwQjVYhOwtA2xa/NGoTHEchsB1As14BYs0=</CipherValue>
        </CipherData>
    </EncryptedData>
</connectionStrings>

والآن يمكنك إستخدام الـ ConnectionString برمجياً بنفس الأسلوب المعتاد, دون الحاجه للقلق بخصوص فك التشفير, لأن تقنية الـ ASP.NET تقوم بهذه الوظيفة نيابة عنك :)

var connectionString = ConfigurationManager.ConnectionStrings["defaultConnectionString"].ConnectionString;

وأخيراً وليش أخراً يمكنك أيضاً من فك تشفير ملف الـ Web.Config بنفس الأداة بإستخدام الأمر التالي:

aspnet_regiis.exe -pdf "connectionStrings" "D:\MyWebsite"

وفي الختام أرجو أن تكون الطريقة نالت الإعجاب وأصبح بإمكانك حماية معلومات الإتصال في مواقعك.

تويتر فيسبوك قوقل + لينكد إن


1 تعليق

Zakaria Mansoor (15/10/2017 12:26:56 م)

Thanks


اكتب تعليقك