ASP.NET Configuration

ASP.NET Configuration – ASP.NET में विभिन्न प्रकार के Configurations को एक XML File द्वारा Manage किया जाता है। किसी ASP.NET Application की Core Settings के साथ ही किसी Specific Application से सम्बंधित Custom Settings की Information को भी इसी Configuration File में Store किया जाता है। किसी XML Based Configuration File की निम्नानुसार कुछ Special विशेषताऐं भी होती हैं:

XML Files Never Locked

चूंकि, XML Based Configuration Files किसी भी .NET Application द्वारा Lock नहीं होतीं, इसलिए हम हमारे Application की Running State में भी किसी भी समय Configuration File को Update कर सकते हैं, जिसके परिणामस्वरूप हमारा ASP.NET Application Smooth तरीके से एक एक Application Domain में Transition हो जाता है।

Easily Replicating and Accessible

यदि हमें हमारे किसी XML Based Configuration File पर Appropriate Network Right प्राप्त हो, तो हम हमारी XML File के Configuration को Remote Computer द्वारा भी अपनी Configuration File को Modify कर सकते हैं अथवा FTP के माध्‍यम से भी नई Configuration File को Upload कर सकते हैं। साथ ही हम किसी एक Application की Configuration File को Copy करते किसी अन्‍य Web Server पर Run हो रहे समान Application के लिए भी समान प्रकार से Reuse कर सकते हैं।

Easy to Edit and Understand

किसी XML Based Configuration File के Configurations वास्तव में Human-Readable Content होते हैं, इसलिए हम उसे किसी Text-Editor के माध्‍यम से आसानी से समझ सकते हैं अथवा जरूरत के अनुसार उसे Edit कर सकते हैं। यानी हमें इस प्रकार की Configuration File की Settings को Edit करने के लिए किसी Special Software की जरूरत नहीं होती।

The Machine.config File

Machine.config नाम की File C:\Windows\Microsoft.NET\Framework\[Version]\Config प्रकार की एक Directory में रहती है। ये File अन्‍य Supported Configuration File से सम्बंधित Sections Define करती है, ASP.NET Worker Process को Configure करती है और उन Providers को Register करती है, जिनका प्रयोग Profiles, Membership व Role-Based Security जैसे Advance Features को Register करने के लिए किया जाता है।

किसी ASP.NET Application की कई Default Settings को इसी File में Specify कर दिया जाता है, जिनकी जरूरत Application के अन्‍य Parts को Programmatically होती है। यानी Application के विभिन्न Parts इसी Configuration File से विभिन्न Default Settings को Access व Manipulate कर लेते हैं।

यदि हम चाहें, तो इस File में Specify किए जा सकने वाले Standard Settings की List को Machine.config.comments नाम की File में देख सकते हैं, जो कि उसी Directory में Exist होती है, जहां Machine.config File रहती है। साथ ही इसी Machine.config.comments File में प्रत्येक Setting से सम्बंधित Description एक Comment के रूप में होता है, जिसके द्वारा हम आसानी से इस बात का पता लगा सकते हैं कि किस Setting को अपने Application की किस जरूरत को पूरा करने के लिए Enable करना है।

Machine.config File के अलावा ASP.NET हमें समान Project Directory मेंही Web.config नाम की एक और File Provide करता है, जिसमें हमारे Web Application से सम्बंधित Additional Settings होती हैं।

इस Web.config File में Specified Settings द्वारा ASP.NET की Core HTTP Handlers व Modules को Register किया जाता है, Current Web Application के लिए Browser Support को Specify किया जाता है साथ ही Web Application से सम्बंधित Security Policies को भी इसी File द्वारा Configure किया जाता है।

किसी Computer System पर Develop किए जाने वाले सभी Web Applications इन्हीं दोनों Files से ही विभिन्न प्रकार की Configuration Settings को Inherit करते हैं। हालांकि जब हम हमारे Web Application को IIS Server पर Deploy करते हैं, तब इन दोनों Files में Specify की जा सकने वाली विभिन्न Settings में से ज्यादातर Settings को सामान्‍यत: Specify करने की जरूरत नहीं होती, क्योंकि ज्यादातर Settings को समान प्रकार की IIS Settings द्वारा Replace कर दिया जाता है और इन Settings को IIS Web Server की स्वयं  की ApplicationHost.config नाम की Configuration File में Specify किया जाता है।

हालांकि IIS Web Server द्वारा ApplicationHost.config File में हम <machineKey> Section के Specify नहीं कर सकते, इसलिए इस Section को हमें हमेंशा Machine.config File में ही Specify करना जरूरी होता है।

<machineKey> Section

ये Section हमें उन Server-Specific Keys को Set करने की सुविधा Provide करता है, जिनका प्रयोग Data को Encrypt करने  तथा  Digital Signatures Create करने के लिए किया जाता है। हम कई अन्‍य ASP.NET Features के साथ ही Encryption Feature को भी Use कर सकते हैं।

ASP.NET Framework विभिन्न प्रकार की Internal जरूरतों जैसे कि Forms Authentication Cookie को Protect करने या View State Data को Protect करने के लिए Encryption Feature को Internally Automatically Use करता है। सामान्‍यत: <machineKey> Element को निम्नानुसार तरीके से Specify किया जाता है:

<machineKey
   validationkey="AutoGenerate,IsolateApps"
   decryptionkey="AutoGenerate,IsolateApps"
   validation="SHA1"
/>

इस Code में “AutoGenerate,IsolateApps” इस बात को Indicate कर रहा है कि ASP.NET स्वयं अपने स्तर पर Machine-Specific o Application Specific Keys Create करके Store करेगा। अन्‍य शब्दों में कहें तो प्रत्येक Application एक Distinct, Automatically Generated Key Use करेगा। जिसकी वजह से Cross-Site Attacks से बचाव होता है, जो कि एक काफी महत्वपूर्ण प्रकार का Hacking Attack है।

यदि हमें Application-Specific Keys की जरूरत न हो, तो हम हमारे Current Computer के सभी Projects के लिए एक Single Key को Use कर सकते हैं और ऐसा करने के लिए हमारा<machineKey> Element निम्नानुसार Define होता है:

<machineKey
   validationkey="AutoGenerate"
   decryptionkey="AutoGenerate"
   validation="SHA1"
/>

यदि हम Web Form Use करते हैं और समान Application को Multiple Computers पर Use करते हैं, तो उपरोक्त दोनों ही तरीके एक समस्या पैदा करते हैं। यदि हम किसी Page की Request करते हैं, जिसे किसी एक Server द्वारा Handle किया जाता है और फिर वह Request Postback होता है और उस Postback Request को किसी दूसरे Server द्वारा Handle किया जाता है, तो वह दूसरा Server हमारे Postback ViewState व Forms के Cookie Objects को Decrypt करने में सक्षम नहीं होता, क्योंकि दो अलग Web Servers समान Decryption Keys को Use नहीं करते हैं।

इस समस्या का समाधान करने के लिए हमें Keys को Machine.config File में Manually Define करना जरूरी होता है, जिसे हम कुछ निम्नानुसार तरीके से Define कर सकते हैं:

<machineKey
validationkey="1EA5F24B0625547769E835539AD3882D3DA88896EA531CC7AFE664866BD51E

A5F24B0625547769E835539AD3882D3DA88896EA531CC7AFE664866BD5"

decryptionkey="824B2653345781AJEFFGR7AF824B2653345781AJEFFGR7AF"

validation="SHA1"
/>

हम Web.config File में Hard-Coded <machineKey का प्रयोग करते हुए Application Specific Key को Hard-Code भी कर सकते हैं। इस प्रकार के Key की जरूरत हमें तब होती है, जब हम उपरोक्तानुसार दोनों में से किसी एक Situation को Face कर रहे होते हैं। यानी यदि हमारा Application एक से ज्यादा Servers के बीच Distributed तरीके से Run हो रहा हो या फिर जब एक ही Web Server पर Run होने वाले एक से ज्यादा Applications में प्रत्येक का स्वयं का Individual Key हो।

Validationkey 40 से 128 Characters के बीच कुछ भी हो सकती है। जबकि जहां तक सम्भव हो, हमें हमेंशा Validation Key के रूप में Maximum Supported Characters Use करने चाहिए। जबकि Descriptionkey के रूप में हम 16 से 48 Characters Use कर सकते हैं। जहां यदि हम 16 Characters ही Use करते हैं, तो Standard DES (Data Encryption Standard) Encryption Use होता है। जबकि यदि हम 48 Characters का Key Specify करते हैं, तो Triple DES (3DES) Encryption Use होता है।

3DES, DES की तुलना में काफी ज्यादा Powerful होता है, जिसे Break करना लगभग असम्भव होता है। इसीलिए हमें हमेंशा Key के रूप में 48 Characters को Use करना चाहिए।

साथ ही यदि Encryption व Decryption दोनों ही प्रकार की Keys की Length उनकी Limit से अधिक हो, तो जब इस प्रकार के Application के किसी Web Page का Request Perform किया जाता है, तो ASP.NET एक Error Message Page Return करता है।

हमें कभी भी अपनी इच्छानुसार Validation व Decryption Keys को Random Characters का प्रयोग करते हुए Create नहीं करना चाहिए, क्योंकि ये Keys सामान्‍यत: उतनी Randomly Unique नहीं होतीं, जितनी हम समझते हैं। इसलिए इस प्रकार की Keys Use करने पर हमारे Application के Hack या Crack होने की सम्भावना काफी ज्यादा होती है।

इसीलिए बेहतर Approach ये होता है कि हम .NET Framework  की Cryptography Classes जो कि System.Security.Cryptography Namespace में Exist होती हैं, का प्रयोग करते हुए Strong Random Keys Generate करें।

Random Key Create करने के लिए हम निम्‍नानुसार CreateMachineKey() नाम का एक Generic Routine Create कर सकते हैं, जो कि Cryptographically एक String Random Number Generate करने के लिए Bytes की एक Random Series Create करता है। ये Method एक Single Parameter Accept करता है जो कि Use किए जाने वाले Characters की संख्‍या को Specify करता है। जबकि Return Value के रूप में Hexadecimal Format में Result Return होता है, जो कि Machine.config File के लिए Required होता है:

publicstaticstring CreateMachineKey(int length)
{
// Create a byte array.
byte[] random = newbyte[length/2];

// Create a cryptographically strong random number generator.
RNGCryptoServiceProvider rng = newRNGCryptoServiceProvider();

// Fill the byte array with random bytes.
    rng.GetBytes(random);

// Create a StringBuilder to hold the result once it is converted to Hexa format.
    System.Text.StringBuilder machineKey = new
    System.Text.StringBuilder(length);

// Loop through the random byte array and append each value to StringBuilder.
for (int i = 0; i < random.Length; i++)
{
 machineKey.Append(String.Format("{0:X2}", random[i]));
}
return machineKey.ToString();
}

हम इस Method को किसी Web Form में Keys Create करने के लिए Use कर सकते हैं। जैसे-

lblDecryptionkey.Text = CreateMachineKey(48);
lblValidationkey.Text = CreateMachineKey(128);

और जब एक बार ये Key Generate हो जाता है, तब अपने Label Control से इस Generated Key को Copy करके Machine.config File में Appropriate Location पर Paste कर सकते हैं। Key Specify करने का ये तरीका Manually Random Key Specify करने की तुलना में काफी ज्यादा बेहतर तरीका है।

जिस तरह से हमने Validationkey Descriptionkey Attribute को उपरोक्तानुसार Describe किया है, ठीक उसी तरह से हम ऐसा Algorithm Choose कर सकते हैं जो कि हमारे ViewState का Hash Code Create कर सके।

SHA1 को Best Encryption Strength Algorithm की तरह Recommend किया जाता है, हालांकि यदि हम चाहें, तो इसके स्थान पर AES (Rijndael), 3DES (TripleDES) या MD5 (Message Digest 5)को Use कर सकते हैं, जो कि ज्यादा बेहतर Performance Provide करता है।

इसके अलावा हम Validation Attribute को Specify करके इस बात को तय कर सकते हैं कि Form Authentication के साथ Use होने वाले Login Ticket के साथ Apply होने वाला Encryption Method कौनसा होगा। जहां Valid Value के रूप में AES, DES, 3DES o Auto हो सकते हैं। Auto, Default को Represent करता है, जो कि हमारे द्वारा Use की जाने वाली Form Authentication Settings के आधार पर बदलता रहता है।

IIS Manager Tool भी हमें Machine Key Settings को Change करने की सुविधा Provide करता है। इस Feature को Use करने के लिए सामान्‍यत: हमें Website Tree में Web Server Computer के Machine Key Icon को Double Click करना होता है।

साथ ही हम इसी Point पर IIS Manager Window के Right Side में दिखाई देने वाले Actions Column के अन्तर्गत Generate Keys पर Click करके Random Validation व Decryption Keys भी Create कर सकते हैं

Core ASP.NET WebForms in Hindi - BccFalna.com: TechTalks in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Core ASP.NET WebForms with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Core ASP.NET WebForms in Hindi | Page:647 | Format: PDF

BUY NOW GET DEMO REVIEWS