Visual Basic .NET 및 Visual C#.NET 프로그래머가 해결해야 할 안전 문제
12542 단어 .net
Robin Reynolds-Haertle
Visual Studio Team
Microsoft Corporation
2002년 1월
요약: Visual Basic 에 대해 중점적으로 설명합니다.NET 및 Visual C#.NET 개발자가 사용하기 시작했습니다.NET 프레임워크에서 해결해야 할 주요 보안 문제이 개요는 Windows 응용 프로그램과 웹 응용 프로그램, 그리고 개발 과정의 실현, 디버깅과 배치 단계를 논의했다.
이 문서는 Visual Studio에 적용됩니다.NET 및.NET 프레임의 최종 버전입니다.만약 미리 발표된 버전을 사용한다면, 프로그램의 실행은 본고에서 논의한 것과 약간 다를 수 있습니다.
카탈로그
이전 버전의 Visual Studio와 비교하여 Microsoft® Visual Studio® .NET는 어플리케이션 실행을 위한 보다 나은 보안 제어를 제공합니다.NET 프레임워크는 더 많은 제어를 제공할 뿐만 아니라 더 많은 프로그래밍 책임을 요구합니다.사용자를 위해 사용하기 쉬운 프로그램을 만들 때 보안 문제를 해결해야 합니다.
일반적으로 다음 세 가지 상황에서 안전 문제를 해결해야 한다.
코드 접근 보안은.NET 프레임워크는 코드의 실행을 제어함으로써 자원에 대한 접근을 제어하는 시스템이다.이런 안전 기능은 운영체제가 제공하는 안전성에 독립하고 운영체제가 제공하는 안전성에 대한 보충이다.사용자가 응용 프로그램을 실행할 때 응용 프로그램은.NET 공용 언어는 런타임에 5개 영역 중 하나에 할당됩니다.다섯 영역은 다음과 같습니다.
Evidence(영어).
이러한 상황을 처리하기 위해 응용 프로그램을 개발하는 것이 당신의 일입니다.이것은 응용 프로그램이 다른 방법으로 데이터를 쓸 수 있도록 하는 것이 아니라, 응용 프로그램이 데이터를 쓸 수 없을 수도 있다는 것을 예상하고 그 가능성에 응답해야 한다는 것이다.비정상 처리(Visual Basic의
Try...Catch 또는 C#의
try...catch) 또는
System.Security.Permissions 네임스페이스의 일부 객체는 응용 프로그램 코드를 더욱 안정적으로 만듭니다.본고 뒤의'부분 신뢰 환경의 개발'1절에서 이러한 방법에 대해 간략하게 설명하였다.
구역의 안전 수준은 따라갈 수 있다.NET 프레임과 함께 설치된 관리 도구로 설정합니다.컴퓨터에서 로케일 보안 수준 설정에 대한 자세한 내용은 을 참조하십시오.
Administration Tools(영어).
전적으로 신임하다
개발자는 통상적으로 완전한 신뢰 환경에서 일한다.그들은 원본 코드를 하드디스크 드라이브에 저장하고 개발에 사용되는 컴퓨터에서 응용 프로그램을 테스트했다.이러한 완전한 신뢰 환경에서 개발자가 컴파일한 모든 코드는 로컬 컴퓨터에서 실행될 수 있다.로컬 컴퓨터는 기본적으로 완전 신뢰 환경으로 정의되어 있기 때문에 보안 이상이 발생하지 않습니다.
부분적 신뢰
일부 신뢰는 완전 신뢰 구역 이외의 모든 구역을 가리킨다.응용 프로그램을 배치할 때, 응용 프로그램은 새로운 구역으로 이동할 수 있고, 새로운 구역은 응용 프로그램을 완전히 신뢰하지 못할 수도 있습니다.일부 신뢰 환경에서 코드를 실행하는 두 가지 가장 흔한 경우는 다음과 같습니다.
일부 신뢰 환경의 개발
이 절에서는 보안 문제가 작성된 코드에 어떤 영향을 미칠지 간략하게 소개한다.일부 신뢰 환경의 개발에는 단일한 해결 방안이 없다.솔루션은 작성한 애플리케이션에 따라 다릅니다.또한 신뢰 등급은 응용 프로그램의 실행 과정에서 변화가 발생할 수 있기 때문에 기존의 신뢰 등급만 테스트한 다음에 계속 실행할 수 없다.
일부 신뢰 영역을 개발하는 첫 번째 단계는 보안 이상이 발생할 것을 식별할 수 있는 코드를 작성하는 것이다.다음 코드를 참고하십시오.
' Visual BasicPublic
Sub MakeABitmap()
Dim b As Bitmap = New Bitmap(100, 100)
'
b.Save("c:\PrettyPicture.bmp")
End Sub
// C#
public void MakeABitmap()
{
Bitmap b = new Bitmap(100, 100);
//
b.Save("c:\\PrettyPicture.bmp");
}
프로젝트와 프로젝트 프로그램 집합이 컴퓨터의 하드디스크 드라이브에 저장되어 있고, 컴퓨터 Administrators 그룹의 구성원이라면, 이 방법은 실행할 때 이상을 일으키지 않습니다.이 프로그램을 인트라넷에 배치하면, 프로그램이 비트맵 대상을 저장하려고 할 때System.Security.SecurityException(참조
SecurityException Class[영어]).하면, 만약, 만약...
Try...Catch(Visual Basic) 또는
try...catch(C#) 블록은 예외로 인해 응용 프로그램이 종료됩니다.이것은 사용자를 불만족스럽게 할 것이다.비정상 처리 코드를 추가하면 애플리케이션에서 다음을 수행할 수 있습니다.
' Visual BasicPublic
Sub MakeABitmap()
Dim b As Bitmap
Try
b = New Bitmap(100, 100)
b.Save("c:\PrettyPicture.bmp")
Catch ex As System.Security.SecurityException
' 。
MessageBox.Show(" ," & _
" 。")
Catch ex As System.Exception
' 。
MessageBox.Show(ex.Message)
End Try
End Sub
// C#
public void MakeABitmap()
{
Bitmap b = null;
try
{
b = new Bitmap(100, 100);
b.Save("c:\\PrettyPicture.bmp");
}
catch (System.Security.SecurityException ex)
{
// 。
MessageBox.Show(" ," +
" 。"); }
catch (System.Exception ex)
{ // 。
MessageBox.Show(ex.Message);
}
}
사용System.Security.Permissions (영어) 명명 공간의 클래스, 속성과 매거진으로 응용 프로그램의 보안 작업을 더 많이 제어할 수 있습니다.다른 프로그램에서 호출할 수 있는 라이브러리를 작성하고 있다면, 라이브러리에서 호출 코드의 권한을 검증할 수 있습니다.예를 들어 코드 파일의 맨 위에 다음 프로그램 집합 단계의 속성을 추가하기만 하면 됩니다.프로그램 집합을 불러올 때, 실행할 때 권한을 검증합니다.실행 중 요청한 권한을 거부하면 프로그램 집합을 불러올 수 없고 보안 이상을 일으킬 수 있습니다.독립된 프로그램에 이 속성을 추가하면 프로그램이 실행되지 않을 수도 있습니다.이 속성이 클래스 라이브러리에 나타나면 실행할 때 이 라이브러리를 불러오지 않을 수도 있습니다.이 라이브러리를 호출하는 코드에try/catch 블록을 추가해야 합니다.
' Visual Basic
<Assembly: System.Security.Permissions.FileIOPermissionAttribute
( _SecurityAction.RequestMinimum,
Write:="c:\PrettyPicture.bmp")>
// C#
[assembly: System.Security.Permissions.FileIOPermissionAttribute
(SecurityAction.RequestMinimum, Write="c:\\PrettyPicture.bmp")]
실행할 때 권한을 요청할 수도 있습니다. 다음 예에서 사용했습니다Demand 방법.실행 중 이 요청을 허용하거나 거부할 수 있습니다.요청 거절은 안전 이상을 유발함으로써 이루어진다.다음과 같이 코드를 다시 작성하여 비트맵 파일에 대한 쓰기 권한을 명시적으로 요청할 수 있습니다.
' Visual BasicPublic
Sub MakeABitmap()
Dim filename As String = "c:\PrettyPicture.bmp"
Dim permission As FileIOPermission = _
New FileIOPermission(FileIOPermissionAccess.Write, _
filename)
Dim b As Bitmap = Nothing
Try
b = New Bitmap(100, 100)
permission.Demand()
b.Save(filename)
Catch ex As System.Security.SecurityException
' 。
MessageBox.Show(" ," & _
" 。")
Catch ex As System.Exception
' 。
MessageBox.Show(ex.Message)
End Try
End Sub
// C#
using System.Security.Permissions;
public void MakeABitmap()
{
string filename = "c:\\PrettyPicture.bmp";
FileIOPermission permission = new
FileIOPermission(FileIOPermissionAccess.Write,
filename);
Bitmap b = null;
try
{
b = new Bitmap(100, 100);
permission.Demand();
b.Save(filename);
}
catch
(System.Security.SecurityException ex)
{
// 。
MessageBox.Show(" ," +
" 。"); }
catch (System.Exception ex)
{ // 。
MessageBox.Show(ex.Message);
}
}
테스트
일부 신뢰 영역을 개발하는 두 번째 단계는 여러 환경에서 테스트를 하는 것입니다. 특히 인트라넷과 인터넷에서.이것은 강제로 안전 이상을 일으킬 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
.net 데이터베이스 조작 프레임워크 SqlSugar의 간단한 시작SqlSugar는 오래된 브랜드입니다.NET 데이터베이스 조작 프레임워크, 과당 빅데이터 과학기술팀이 유지 보수 및 업데이트, Github star 수 EF 및 Dapper 버금가 지원 데이터베이스: MySql, S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.