آموزش ASP.Net > اتصال به منابع داده ای در ASP.Net > مطمئن کردن Connection Strings ای در ASP.Net

مقدمه :

هنگام کار با کنترل های سرور داده ، بهتر است رشته های ارتباطی ( Connection String ) برنامه خود را در فایل web.config سایت متمرکز کنید . این کار همانطور که در بخش های قبل توضیح دادیم ، دارای چندین مزیت عمده است :

  • شما می توانید یک Connection String ساخته و با اشاره به آن ازش در هر کنترل سرور داده دیگری در هر جای سایت استفاده نمایید ، به جای اینکه هر بار در هر صفحه و در هر کنترل مجددا مشابه آن را تعریف نمایید .
  • می توانید با رمزگذاری ( encrypt ) رشته های ارتباطی در فایل web.config امنیت آنها را بالا برده و یک لایه حفاظتی برایشان ایجاد نمایید .
  • هر بار که مشخصات رشته ارتباطی تغییر کند ، کافی است اطلاعات آن را یکبار درون فایل web.config به روز کرده و این تغییر در تمام سایت اعمال می شود .

در این بخش ، شما یاد خواهید گرفت چگونه Connection String های مورد نظر خود را به وسیله ویژوال استودیو و کنترل های سرور داده در فایل web.config قرار داده و سپس با استفاده از ابزار Aspnet_regiis.exe ، این رشته های ارتباطی را برای بالا بردن بالا بردن امنیت و افزودن لایه حفاظتی ، رمز گذاری نمایید .

مرحله اول  : نحوه اضافه کردن یک Connection String به فایل web.config توسط یک کنترل سرور داده :

  1. صفحه مورد نظر خود را در ویژوال استودیو و در نمای Design باز کنید .
  2. از بخش کنترل های Data منوی Toolbox ، یک کنترل سرور داده مثل SqlDataSource را انتخاب کرده و بر روی صفحه قرار دهید .
  3. بر روی کنترل سرور داده کلیک راست کرده و گزینه Show Smart Tag را انتخاب کنید .
  4. در پنل Smart Tag ، گزینه Configure Data Source را انتخاب نمایید .
  5. در پنل Choose a Data Connection ، گزینه New Connection را کلیک نمایید . پنجره ای مطابق تصویر زیر باز می شود :

    نوع و آدرس پایگاه داده مورد نظر خود را از لیست Data Source انتخاب نموده و اطلاعات لازم برای بخش های server name , user name و password در پنجره Add Connection تعیین کرده و گزینه Ok را بزنید .
  6. برنامه شما را با خلاصه ای از اطلاعات Connection ایجاد شده به پنجره Configure Data Source مطابق عکس زیر ، باز می گرداند .
  7. بر روی گزینه Next و سپس گزینه Yes کلیک نمایید تا Connection String شما در فایل web.config ایجاد و ذخیره شود . از این به بعد می توانید با اشاره به این Connection String ، از آن در هر جای برنامه خود و برای کنترل های سرور داده استفاده نمایید .
    کد Connection String ایجاد شده در فایل web.config شبیه کد زیر خواهد بود :
      کد  <connectionStrings>
           <add name="Main_DBConnectionString"
             connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename="D:\Developer v.4\App_Data\Main_DB.mdf";Integrated       
             Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" />
    </connectionStrings>

مرحلله دوم : نحوه رمزنگاری ( encrypt ) رشته های ارتباطی ( connection string ) در فایل web.config :

  1. در خط فرمان ویندوز ، ابزار Aspnet_regiis.exe را با تایپ عبارت Aspnet_regiis.exe با پارامترهای زیر ، اجرا نمایید :
    • عبارت pe- را به قبل نام "connectionStrings" برای رمزگذاری رشته های ارتباطی اضافه نمایید .
    • عبارت app- را به قبل نام برنامه خود برای رمزگذاری آن اضافه کنید .
    راهنمایی : فایل Aspnet_regiis.exe بر روی کامپیوتر شما در پوشه ای در مسیر %systemroot%\Microsoft.NET\Framework\versionNumber قرار دارد .
    کد زیر ، نحوه فراخوانی ابزار Aspnet_regiis.exe ، همراه با ارسال پارامترهای ذکر شده را نشان می دهد :
      کد  aspnet_regiis   -pe "connectionStrings"    -app "/SampleApplication"

    پس از اجرای دستور فوق ، محتویات فایل web.comfig را مشاهده نمایید . خواهید دید که بخش المنت <configuration> که connectionstring ها در آن قرار دارند ، حاوی اطلاعات اضافه ای است که باعث رمز گذاری آن شده است . برای مثال ، کد این بخش به صورت زیر در خواهد آمد :
      کد 
    <configuration>
        <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>WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0BoazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRWwqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
                </CipherValue>
                </CipherData>
                </EncryptedKey>
                </KeyInfo>
                <CipherData>
                <CipherValue>OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcuQ8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fNXqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWIb7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgLgdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE6/kkr0Ps++CE=
                </CipherValue>
                </CipherData>
            </EncryptedData>
        </connectionStrings>
    </configuration>

    خط فرمان ویندوز را برای اجرای دستورات بعدی باز بگذارید .
  2. در مرحله بعدی ، نام کاربر استفاده کننده از سیستم را با استفاده از خاصیت WindowsIdentify استخراج می کنیم . کد زیر نحوه انجام این کار را نشان می دهد :
    VB   کد <%@ Page Language="VB" %>
    <%
        Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent( ).Name)
    %>
    C#   کد <%@ Page Language="C#" %>
    <%
        Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent( ).Name);
    %>

    کاربری که در حال استفاده از سیستم است ، بایستی توانایی خواندن و رمزنگاری کد موجود در بخش های فایل web.config را داشته باشد . به صورت پیش فرض سایت های ASP.Net ، با شی امنیتی " RsaProtectedConfigurationProvider " کار می کنند . کلید RSA این شی که برای رمز گذاری کدها به کار می رود ، دارای نام " RsaProtectedConfigurationProvider " است .
  3. برای اینکه مجوز لازم برای استفاده کاربر فعلی و رمزنگاری کدها به وی داده شود ، پس از خواندن نام آن ، مجددا ابزار Aspnet_regiis.exe را فراخوانی کرده و با ارسال پارامترهای زیر ، مجوز لازم را برای آن تعیین می کنیم :
    • اضافه کردن پارامتر pe- به قبل نام کلید RSA شی امنیتی برنامه که در این مثال " RsaProtectedConfigurationProvider" است .
    • نام کاربری کاربر جاری که در مرحله قبل تشخیص داده ایم .
    کد زیر نحوه اعطای مجوز به کاربر را برای دسترسی به کدها و رمزنگاری فایل web.config را نشان می دهد :
      کد aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
  4. برای رمز گشایی فایل کد گذاری شده web.config ، ابزار Aspnet_regiis.exe را با پارامتر pd- اجرا نمایید . Syntax این دستور شبیه دستور رمز گذاری آن است . مثال : کد زیر ، نحوه رمزگشایی از المنت connectionStrings برنامه SampleApplication را نشان می دهد :
      کد aspnet_regiis -pd "connectionStrings" -app "/SampleApplication"


راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1 حمایت نمایید :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :                 
آدرس Email :    
 
نظر شما :  
 
سوال امنیتی : پایتخت ایران ؟      
حمایت از سایت Developer1