imported>Bbon |
imported>Bbon (→Understanding ASP.NET Dynamic Compilation) |
||
2번째 줄: | 2번째 줄: | ||
배포시엔 피해야할 방법으로 보인다.<br /> | 배포시엔 피해야할 방법으로 보인다.<br /> | ||
[http://msdn.microsoft.com/ko-kr/library/ms366723(v=vs.100).aspx Understanding ASP.NET Dynamic Compilation] | [http://msdn.microsoft.com/ko-kr/library/ms366723(v=vs.100).aspx Understanding ASP.NET Dynamic Compilation] | ||
+ | |||
+ | === machineKey Element === | ||
+ | 폼 인증 데이터와 뷰 상태 데이터 및 out-of-process 세션 상태 ID의 암호화, 해독, 유효성 검사에 사용할 알고리즘을 구성합니다. | ||
+ | |||
+ | |||
+ | <cite>[http://msdn.microsoft.com/ko-kr/library/vstudio/w8h3skw9(v=vs.100).aspx MSDN : machineKey 요소(ASP.NET 설정 스키마)]</cite> | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang="xml"><machineKey | ||
+ | validationKey="AutoGenerate,IsolateApps" [String] | ||
+ | decryptionKey="AutoGenerate,IsolateApps" [String] | ||
+ | validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 | | ||
+ | HMACSHA384 | HMACSHA512 | alg:algorithm_name] | ||
+ | decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name] | ||
+ | /></syntaxhighlight> | ||
+ | {| class="wikitable" style="width:100%" | ||
+ | !attribute | ||
+ | !description | ||
+ | |- | ||
+ | |decryption | ||
+ | |선택적 String 특성입니다. | ||
+ | |||
+ | 데이터 암호화 및 해독에 사용되는 알고리즘 형식(인증 데이터)을 지정합니다. | ||
+ | |||
+ | 이 특성의 값은 다음 중 하나로 지정할 수 있습니다. | ||
+ | * Auto 사용할 해독 알고리즘을 ASP.NET에서 자동으로 결정하도록 지정합니다. 이 특성의 기본값입니다. | ||
+ | * AES ASP.NET에서 AES (Rijndael) 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. AES 는 기본 알고리즘이며 이 특성의 값이 Auto일 때 사용됩니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환됩니다. | ||
+ | * DES ASP.NET에서 DES(데이터 암호화 표준) 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다. | ||
+ | * 3DES ASP.NET에서 TripleDES 알고리즘(3DES)을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다. | ||
+ | * alg: algorithm_name ASP.NET에서 사용자 지정 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 암호화 알고리즘은 SymmetricAlgorithm에서 파생된 클래스에 정의되어야 합니다. ASP.NET에서는 SymmetricAlgorithm.Create 메서드를 호출하고 여기 지정된 알고리즘의 이름을 전달합니다. | ||
+ | |- | ||
+ | |decryptionKey | ||
+ | |필수 String 특성입니다. | ||
+ | |||
+ | 데이터를 암호화하고 해독하는 데 사용되는 키 또는 키를 생성하는 프로세스를 지정합니다. 이 특성은 뷰 상태가 암호화된 경우 폼 인증 암호화/해독 및 뷰 상태 암호화에 사용됩니다. | ||
+ | |||
+ | 이 특성의 값은 다음 중 하나로 지정할 수 있습니다. | ||
+ | |||
+ | * AutoGenerate, IsolateApps 키가 자동으로 생성되도록 지정합니다. 기본값입니다. AutoGenerate 수정자는 ASP.NET에서 난수 키를 생성하여 LSA(Local Security Authority)에 저장하도록 지정합니다. IsolateApps 수정자는 ASP.NET에서 응용 프로그램마다 응용 프로그램의 ID를 사용하여 고유 암호화 키를 생성하도록 지정합니다. | ||
+ | * 키 값 수동으로 할당된 키를 지정합니다. decryptionKey 값은 웹 팜의 모든 서버에서 일관된 구성을 유지하도록 16진 문자열로 직접 설정해야 합니다. 키는 DES로 암호화된 경우 64비트(16개의 16진 문자)이며 3DES의 경우 192비트(48개의 16진 문자) 입니다. AES 의 경우 키 길이가 128비트(32자), 192비트(48자) 또는 256비트(64자)일 수 있습니다. 가장 긴 키는 보안성이 가장 우수합니다. 난수 키는 RNGCryptoServiceProvider 클래스를 사용하여 수동으로 생성할 수 있습니다. 자세한 내용은 How To: Configure MachineKey in ASP.NET 2.0을 참조하십시오. | ||
+ | 자세한 내용은 DecryptionKey을 참조하십시오. | ||
+ | |- | ||
+ | |validation | ||
+ | |필수 MachineKeyValidation 특성입니다. | ||
+ | |||
+ | 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. | ||
+ | |||
+ | 기본적으로 뷰 상태는 base-64 인코딩된 문자열로 전송됩니다. 인코딩된 데이터는 알아볼 수 없는 것 같지만 base-64 인코딩은 쉽게 디코딩되기 때문에 안전하지 않습니다. 뷰 상태에 중요한 데이터를 저장하는 경우 유효성 검사와 함께 ASP.NET에서 뷰 상태 데이터를 암호화하도록 지정할 수 있습니다. 웹 응용 프로그램의 모든 페이지 또는 선택한 페이지에 대한 뷰 상태 암호화를 지정할 수 있습니다. 이 옵션에 대한 자세한 내용은 ViewStateEncryptionMode 및 RegisterRequiresViewStateEncryption()을 참조하십시오. | ||
+ | |||
+ | 뷰 상태 암호화를 사용하려는 경우 이 특성을 AES로 설정합니다. 경우에 따라 decryptionKey 값은 뷰 상태 데이터를 암호화하는 데 사용되며 ASP.NET은 데이터 유효성 검사를 위해 HMACSHA1 해시 알고리즘을 사용합니다. | ||
+ | |||
+ | 이 특성의 값은 다음 중 하나로 지정할 수 있습니다. | ||
+ | |||
+ | * AES 뷰 상태가 암호화되었을 때 ASP.NET에서 AES(Rijndael) 암호화 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 옵션이 validation 특성에 대해 지정된 경우 유효성 검사를 위해 HMACSHA1 알고리즘이 사용됩니다. | ||
+ | * MD5 ASP.NET에서 Message Digest 5(MD5) 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다. | ||
+ | * SHA1 ASP.NET에서 HMACSHA1 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 알고리즘은 뷰 상태 암호화를 지원하도록 이 특성을 AES로 설정해야 하는 경우에만 사용해야 합니다. 그렇지 않을 경우, HMACSHA256, HMACSHA384 또는 HMACSHA512를 사용합니다. | ||
+ | * 3DES 뷰 상태가 암호화되었을 때 ASP.NET에서 TripleDES(3DES) 알고리즘을 사용하여 데이터를 암호화하고 해독하도록 지정합니다. 이 옵션이 validation 특성에 대해 지정된 경우 유효성 검사를 위해 HMACSHA1 알고리즘이 사용됩니다. 이 알고리즘은 레거시 용도로만 포함되어 있으며 이전 버전의 ASP.NET과 호환성이 필요한 경우에만 사용해야 합니다. | ||
+ | * HMACSHA256 ASP.NET에서 HMACSHA256 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 기본값입니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환되지 않습니다. | ||
+ | * HMACSHA384 ASP.NET에서 HMACSHA384 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 옵션은 HMACSHA256 알고리즘에서 제공하는 것보다 더 강력한 보안을 요구하는 응용 프로그램에 사용할 수 있습니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환됩니다. | ||
+ | * HMACSHA512 ASP.NET에서 HMACSHA512 해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 이 옵션은 HMACSHA384 알고리즘에서 제공하는 것보다 더 강력한 보안을 요구하는 응용 프로그램에 사용할 수 있습니다. 이 알고리즘은 미국 FIPS(Federal Information Processing Standards)와 호환됩니다. | ||
+ | * alg: algorithm_name ASP.NET에서 사용자 지정 알고리즘을 사용하도록 지정합니다. 접두사 "alg:" 다음에는 KeyedHashAlgorithm에서 파생되는 클래스의 이름이 옵니다. ASP.NET에서는 Create() 메서드를 호출하고 여기 지정된 알고리즘의 이름을 전달합니다. | ||
+ | |- | ||
+ | |validationKey | ||
+ | |필수 String 특성입니다. | ||
+ | |||
+ | 데이터의 유효성을 검사하는 데 사용되는 키 또는 키가 생성되는 프로세스를 지정합니다. validationKey 값은 세션 사이에 세션 상태 변수가 격리되도록 out-of-process 응용 프로그램별 세션 ID를 생성하는 데도 사용됩니다. | ||
+ | |||
+ | 이 특성의 값은 다음 중 하나로 지정할 수 있습니다. | ||
+ | |||
+ | * AutoGenerate, IsolateApps 키가 자동으로 생성되도록 지정합니다. 기본값입니다. AutoGenerate 수정자는 ASP.NET에서 난수 키를 생성하여 LSA(Local Security Authority)에 저장하도록 지정합니다. IsolateApps 수정자는 ASP.NET에서 응용 프로그램마다 응용 프로그램의 ID를 사용하여 고유 암호화 키를 생성하도록 지정합니다. | ||
+ | * 키 값 수동으로 할당된 키를 지정합니다. validationKey 값은 웹 팜의 모든 서버에서 일관된 구성을 유지하도록 16진 문자열로 직접 설정해야 합니다. 키의 길이는 사용되는 해시 알고리즘에 따라 달라집니다. | ||
+ | ** AES 에는 256비트 키(16진수 문자 64개)가 필요합니다. | ||
+ | ** MD5 에는 256비트 키(16진수 문자 32개)가 필요합니다. | ||
+ | ** SHA1 에는 160비트 키(16진수 문자 40개)가 필요합니다. | ||
+ | ** 3DES 에는 192비트 키(16진 문자 48개)가 필요합니다. | ||
+ | ** HMACSHA256 에는 256비트 키(16진수 문자 64개)가 필요합니다. | ||
+ | ** HMACSHA384 에는 384비트 키(16진수 문자 96개)가 필요합니다. | ||
+ | ** HMACSHA512 에는 512비트 키(16진수 문자 128개)가 필요합니다. | ||
+ | |||
+ | RNGCryptoServiceProvider 클래스를 사용하여 수동으로 생성할 수 있는 임의 키입니다. 자세한 내용은 How To: Configure MachineKey in ASP.NET 2.0을 참조하십시오. 이 항목은 HMACSHA256, HMACSHA384 또는 HMACSHA512 알고리즘을 나열하지 않습니다. 그러나, 프로세스는 올바른 키 길이를 지정하는 한 이러한 알고리즘에서도 작동합니다. | ||
+ | |||
+ | 자세한 내용은 ValidationKey을 참조하십시오. | ||
+ | |} | ||
+ | |||
+ | 다음 코드 예제에서는 validationKey 특성과 decryptionKey 특성을 모두 AutoGenerate로 설정하는 방법을 보여 줍니다. 서버의 각 응용 프로그램에 대해 고유한 키를 생성하도록 isolateApps 값이 지정됩니다. | ||
+ | <syntaxhighlight lang="xml"><machineKey | ||
+ | validationKey="AutoGenerate,IsolateApps" | ||
+ | decryptionKey="AutoGenerate,IsolateApps" | ||
+ | /></syntaxhighlight> | ||
+ | |||
+ | 다음 코드 예제에서는 validationKey 특성과 decryptionKey 특성을 수동으로 생성된 임의의 값으로 설정하는 방법에 대해 보여줍니다. validationKey 특성은 HMACSHA256 해시 알고리즘에 대해 256비트의 긴 키로 설정되며 decryptionKey 특성도 AES 암호화 알고리즘에 대해 가능한 가장 긴 256비트의 긴 키로 설정되어 있습니다. 이는 예제일 뿐이며 사용자 응용 프로그램에서 사용해서는 안됩니다. | ||
+ | |||
+ | <syntaxhighlight lang="xml"><machineKey | ||
+ | validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F" | ||
+ | decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4" | ||
+ | /></syntaxhighlight> | ||
+ | |||
[[분류:개발]] | [[분류:개발]] | ||
[[분류:.Net Framework]] | [[분류:.Net Framework]] | ||
[[분류:Dev]] | [[분류:Dev]] |
2014년 2월 22일 (토) 13:31 판
Understanding ASP.NET Dynamic Compilation
배포시엔 피해야할 방법으로 보인다.
Understanding ASP.NET Dynamic Compilation
machineKey Element
폼 인증 데이터와 뷰 상태 데이터 및 out-of-process 세션 상태 ID의 암호화, 해독, 유효성 검사에 사용할 알고리즘을 구성합니다.
MSDN : machineKey 요소(ASP.NET 설정 스키마)
<machineKey
validationKey="AutoGenerate,IsolateApps" [String]
decryptionKey="AutoGenerate,IsolateApps" [String]
validation="HMACSHA256" [SHA1 | MD5 | 3DES | AES | HMACSHA256 |
HMACSHA384 | HMACSHA512 | alg:algorithm_name]
decryption="Auto" [Auto | DES | 3DES | AES | alg:algorithm_name]
/>
attribute | description |
---|---|
decryption | 선택적 String 특성입니다.
데이터 암호화 및 해독에 사용되는 알고리즘 형식(인증 데이터)을 지정합니다. 이 특성의 값은 다음 중 하나로 지정할 수 있습니다.
|
decryptionKey | 필수 String 특성입니다.
데이터를 암호화하고 해독하는 데 사용되는 키 또는 키를 생성하는 프로세스를 지정합니다. 이 특성은 뷰 상태가 암호화된 경우 폼 인증 암호화/해독 및 뷰 상태 암호화에 사용됩니다. 이 특성의 값은 다음 중 하나로 지정할 수 있습니다.
자세한 내용은 DecryptionKey을 참조하십시오. |
validation | 필수 MachineKeyValidation 특성입니다.
해시 알고리즘을 사용하여 데이터의 유효성을 검사하도록 지정합니다. 기본적으로 뷰 상태는 base-64 인코딩된 문자열로 전송됩니다. 인코딩된 데이터는 알아볼 수 없는 것 같지만 base-64 인코딩은 쉽게 디코딩되기 때문에 안전하지 않습니다. 뷰 상태에 중요한 데이터를 저장하는 경우 유효성 검사와 함께 ASP.NET에서 뷰 상태 데이터를 암호화하도록 지정할 수 있습니다. 웹 응용 프로그램의 모든 페이지 또는 선택한 페이지에 대한 뷰 상태 암호화를 지정할 수 있습니다. 이 옵션에 대한 자세한 내용은 ViewStateEncryptionMode 및 RegisterRequiresViewStateEncryption()을 참조하십시오. 뷰 상태 암호화를 사용하려는 경우 이 특성을 AES로 설정합니다. 경우에 따라 decryptionKey 값은 뷰 상태 데이터를 암호화하는 데 사용되며 ASP.NET은 데이터 유효성 검사를 위해 HMACSHA1 해시 알고리즘을 사용합니다. 이 특성의 값은 다음 중 하나로 지정할 수 있습니다.
|
validationKey | 필수 String 특성입니다.
데이터의 유효성을 검사하는 데 사용되는 키 또는 키가 생성되는 프로세스를 지정합니다. validationKey 값은 세션 사이에 세션 상태 변수가 격리되도록 out-of-process 응용 프로그램별 세션 ID를 생성하는 데도 사용됩니다. 이 특성의 값은 다음 중 하나로 지정할 수 있습니다.
RNGCryptoServiceProvider 클래스를 사용하여 수동으로 생성할 수 있는 임의 키입니다. 자세한 내용은 How To: Configure MachineKey in ASP.NET 2.0을 참조하십시오. 이 항목은 HMACSHA256, HMACSHA384 또는 HMACSHA512 알고리즘을 나열하지 않습니다. 그러나, 프로세스는 올바른 키 길이를 지정하는 한 이러한 알고리즘에서도 작동합니다. 자세한 내용은 ValidationKey을 참조하십시오. |
다음 코드 예제에서는 validationKey 특성과 decryptionKey 특성을 모두 AutoGenerate로 설정하는 방법을 보여 줍니다. 서버의 각 응용 프로그램에 대해 고유한 키를 생성하도록 isolateApps 값이 지정됩니다.
<machineKey
validationKey="AutoGenerate,IsolateApps"
decryptionKey="AutoGenerate,IsolateApps"
/>
다음 코드 예제에서는 validationKey 특성과 decryptionKey 특성을 수동으로 생성된 임의의 값으로 설정하는 방법에 대해 보여줍니다. validationKey 특성은 HMACSHA256 해시 알고리즘에 대해 256비트의 긴 키로 설정되며 decryptionKey 특성도 AES 암호화 알고리즘에 대해 가능한 가장 긴 256비트의 긴 키로 설정되어 있습니다. 이는 예제일 뿐이며 사용자 응용 프로그램에서 사용해서는 안됩니다.
<machineKey
validationKey="32E35872597989D14CC1D5D9F5B1E94238D0EE32CF10AA2D2059533DF6035F4F"
decryptionKey="B179091DBB2389B996A526DE8BCD7ACFDBCAB04EF1D085481C61496F693DF5F4"
/>