2006년 4월 27일 목요일

URL 분석을 위한 System.Uri 클래스

가끔 프로그래밍을 하다보면 URL 분석을 할 경우가 필요하다. 이럴때 정말 유용한 클래스 하나를 소개하겠다. 바로 System.Uri 클래스 이다. 자. 백문이불여일타 이다. 아래와 같이 코딩해보자

using System;
namespace StartSocket
{
    class Class1
    {
        [STAThread] static void Main(string[] args)
        {
            string taeyoUrl="http://www.taeyo.pe.kr/threadboard/Content.asp?table=Board_Asp&seqs=93626&page=1";

            Uri uri = new Uri(taeyoUrl);

            Console.WriteLine("Host : " + uri.Host);
            // www.taeyo.pe.kr
            Console.WriteLine("URL Query : " + uri.Query);
            //?table=Board_Asp&seqs=93626&page=1&IsSearch= 쿼리가 출력된다.
            Console.WriteLine("Host Type:" + uri.HostNameType);
            // Dns 가 출력된다. IP 인경우 IPv4 로 출력된다.
            Console.WriteLine(uri.AbsolutePath);
            //threadboard/Content.asp 절대 경로가 출력된다.
        }
    }

Url 에 대한 정보를 상세하게 분석하여 필요한 정보를 대부분 string 형태로 얻어올 수 있다 정말 유용한 클래스 이다.

출처: http://www.taeyo.net/lecture/NET_01/NetSocket02.asp



27-TaeyoBanNew.gif

2006년 4월 23일 일요일

WMI 명령줄 유틸리티 Wmic.exe

Wmic.exe는 Windows XP 이상부터 내장되어 있는 WMI 정보를 커맨드라인에서 쿼리할수 있느 툴입니다. 간편하면서도 강력합니다.

다음은 컴퓨터의 디스크 특정 정보를 쿼리한 내용입니다.

C:\>wmic DISKDRIVE get Caption,InterfaceType,SystemName

Caption            InterfaceType  SystemName
FUJITSU MHT2040AT  IDE            SERVERINFO

출력포맷을 컴마로 지정한 경우

C:\>wmic DISKDRIVE get Caption,InterfaceType,SystemName /FORMAT:CSV

Node,Caption,InterfaceType,SystemName
SERVERINFO,FUJITSU MHT2040AT,IDE,SERVERINFO

출력포맷을 XML 형식으로 지정한 경우

C:\>wmic DISKDRIVE get Caption,InterfaceType,SystemName /FORMAT:XML.XSL /TRANSLATE:BASICXML

<DIV STYLE="font-family:Courier; font-size:10pt; margin-bottom:2em">
<DIV STYLE="margin-left:1em">
<SPAN STYLE="color:gray"><COMMAND<SPAN STYLE="color:navy">
SEQUENCENUM="<SPAN STYLE="color:black">1</SPAN>"</SPAN>
<SPAN STYLE="color:navy">
ISSUEDFROM="<SPAN STYLE="color:black">SERVERINFO</SPAN>"</SPAN>
<SPAN STYLE="color:navy">
STARTTIME="<SPAN STYLE="color:black">04-22-2006T14:57:40</SPAN>"</SPAN>
......... 계속

Wmic에서는 특정 클래스명을 모르더라도 이미 지정된 별칭을 통해서 쿼리가 가능합니다. 앞서 예제도 별칭을 통해서 쿼리 한것입니다.

ALIAS                    - 로컬 시스템에서 사용 가능한 별칭 액세스
BASEBOARD                - 기본 보드(마더 보드 또는 시스템 보드) 관리
BIOS                     - 기본 입출력 서비스(BIOS) 관리
BOOTCONFIG               - 부트 구성 관리
CDROM                    - CD-ROM 관리
COMPUTERSYSTEM           - 컴퓨터 시스템 관리
CPU                      - CPU 관리
CSPRODUCT                - SMBIOS의 컴퓨터 시스템 제품 정보
DATAFILE                 - DataFile 관리
DCOMAPP                  - DCOM 응용 프로그램 관리
DESKTOP                  - 사용자 데스크톱 관리
DESKTOPMONITOR           - 데스크톱 모니터 관리
DEVICEMEMORYADDRESS      - 장치 메모리 주소 관리
DISKDRIVE                - 실제 디스크 드라이브 관리
DISKQUOTA                - NTFS 볼륨의 디스크 공간 사용
DMACHANNEL               - 직접 메모리 액세스(DMA) 채널 관리
ENVIRONMENT              - 시스템 환경 설정 관리
FSDIR                    - 파일 시스템 디렉터리 항목 관리
GROUP                    - 그룹 계정 관리
IDECONTROLLER            - IDE 컨트롤러 관리
IRQ                      - 인터럽트 요청(IRQ) 관리
JOB                      - 일정 서비스를 사용하여 예약된 작업 액세스
LOADORDER                - 실행 종속성을 정의하는 시스템 서비스 관리
LOGICALDISK              - 로컬 저장 장치 관리
LOGON                    - LOGON 세션
MEMCACHE                 - 캐시 메모리 관리
MEMLOGICAL               - 시스템 메모리 관리(구성 레이아웃 및 사용 가능한 메모리)
MEMORYCHIP               - 메모리 칩 정보.
MEMPHYSICAL              - 컴퓨터 시스템의 실제 메모리 관리
NETCLIENT                - 네트워크 클라이언트 관리
NETLOGIN                 - (특정 사용자의) 네트워크 로그인 정보 관리
NETPROTOCOL              - 프로토콜(및 네트워크 특성) 관리
NETUSE                   - 활성 네트워크 연결 관리
NIC                      - 네트워크 인터페이스 컨트롤러(NIC) 관리
NICCONFIG                - 네트워크 어댑터 관리
NTDOMAIN                 - NT 도메인 관리
NTEVENT                  - NT 이벤트 로그의 항목
NTEVENTLOG               - NT 이벤트 로그 파일 관리
ONBOARDDEVICE            - 마더 보드(시스템 보드)에 내장된 일반 어댑터 장치 관리
OS                       - 설치된 운영 체제 관리
PAGEFILE                 - 가상 메모리 파일 스와핑 관리
PAGEFILESET              - 페이지 파일 설정 관리
PARTITION                - 실제 디스크의 파티션된 영역 관리
PORT                     - I/O 포트 관리
PORTCONNECTOR            - 실제 연결 포트 관리
PRINTER                  - 프린터 장치 관리
PRINTERCONFIG            - 프린터 장치 구성 관리
PRINTJOB                 - 인쇄 작업 관리
PROCESS                  - 프로세스 관리
PRODUCT                  - 설치 패키지 작업 관리
QFE                      - QFE(Quick Fix Engineering)
QUOTASETTING             - 볼륨의 디스크 할당량 정보 설정
RDACCOUNT                - 원격 데스크톱 연결에 대한 사용 권한 관리.
RDNIC                    - 특정 네트워크 어댑터에서의 원격 데스크톱 연결 관리.
RDPERMISSIONS            - 특정 원격 데스크톱 연결에 대한 사용 권한.
RDTOGGLE                 - 원격으로 원격 데스크톱 수신 대기자 켜기 또는 끄기.
RECOVEROS                - 운영 체제에 오류가 있을 때 메모리에서 수집할 정보
REGISTRY                 - 컴퓨터 시스템 레지스트리 관리
SCSICONTROLLER           - SCSI 컨트롤러 관리
SERVER                   - 서버 정보 관리
SERVICE                  - 서비스 응용 프로그램 관리
SHADOWCOPY               - 섀도 복사본 관리.
SHADOWSTORAGE            - 섀도 복사본 저장소 영역 관리.
SHARE                    - 공유 리소스 관리
SOFTWAREELEMENT          - 시스템에 설치된 소프트웨어 제품 요소 관리
SOFTWAREFEATURE          - SoftwareElement의 소프트웨어 제품 하위 집합 관리
SOUNDDEV                 - 사운드 장치 관리
STARTUP                  - 사용자가 컴퓨터에 로그온할 때 자동으로 실행할 명령 관리
SYSACCOUNT               - 시스템 계정 관리
SYSDRIVER                - 기본 서비스를 위한 시스템 드라이버 관리
SYSTEMENCLOSURE          - 실제 시스템 엔클로저 관리
SYSTEMSLOT               - 포트, 슬롯, 주변 기기 및 기타 연결점의 실제 연결점 관리
TAPEDRIVE                - 테이프 드라이브 관리
TEMPERATURE              - 온도 센서(전자식 온도계)의 데이터 관리
TIMEZONE                 - 표준 시간대 데이터 관리
UPS                      - UPS 관리
USERACCOUNT              - 사용자 계정 관리
VOLTAGE                  - 전압 센서(전자식 전압계) 데이터 관리
VOLUME                   - 로컬 저장소 볼륨 관리.
VOLUMEQUOTASETTING       - 디스크 할당량 설정을 특정 디스크 볼륨과 연결
VOLUMEUSERQUOTA          - 사용자 당 저장소 볼륨 할당량 관리.
WMISET                   - WMI 서비스 작업 매개 변수 관리

다음과 같이, 클래스명을 통해서 직접 쿼리가 가능합니다., 별칭에 없는 것은 클래스를 통하거나 별칭을 등록해서 편리하게 이용할수 있겠죠..

wmic:root\cli>path win32_processor get Caption,Description,Name
Caption                          Description                      Name
x86 Family 6 Model 9 Stepping 5  x86 Family 6 Model 9 Stepping 5  Intel(R) Pentium(R) M processor 1400MHz


이러한 기능외에, WMI는 쿼리 명령어를 지원합니다. 이를 테면 특정 쿼리를 통해서 WMI값을 업데이트하면 시스템에 적용이 됩니다. 컴퓨터를 리부팅/종료 까지 할수 있습니다.

다음 처럼 시스템 종료나 리붓팅이 가능합니다.

wmic os where "status='ok'" call reboot  -리붓팅
wmic os where "status='ok'" call shutdown  -종료

명령줄 도구이지만,. 네트워크를 통해서 쿼리도 가능하고, XML 형태로도 출력이 가능하므로 이용방법에 따라서 서버관리자에는 상당히 유용한 툴이 될수도 있습니다.

좀더 자세한 사용법은, 도움말을 참조해 보시기 바랍니다.

 


2006년 4월 22일 토요일

SQL Server 2005 서비스 팩 1

SQL Server 2005 가 나온지 얼마되지 않아서,..
벌써 SQL Server 2005 서비스 팩 1 이 발표되었네요,.

4월 19일자로 다운로드에 올라왔습니다.

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=cb6c71ea-d649-47ff-9176-e7cac58fd4bc

2006년 4월 20일 목요일

유저 컨트롤에서 페이지의 ViewState 접근...

마침 저도 User Control 에서 Page의 상태 값에 접근할 필요가 있어서 구현을 해보니 ViewState 속성에 직접 접근하는 것은 않되더군요.

그런데 MSDN 의 예제 코드에서 속성의 get, set 메서드 구현시 ViewState 값을 사용하는 것을 본 적이 있어서

Page 의 속성 정의를 통해 접근을 시도해보니 되더라구요.

구체적으로 말씀드리면

Page 의 속성을 정의 해놓고 (물론 속성 값의 한정자는 public 으로...
속성의 get, set 메서드에 ViewState 값을 이용합니다.

예를 들어

Page 에 StateValue 라는 속성을 정의 하고 StateValue 의 get, set 메서드를 다음과 같이 구현합니다.

public string StateValue
{
    get
    {
        if (ViewState["statevalue"] == null)
            return "";\
        else
            return ViewState["statevalue"].ToString();
    }
    set
    {
        ViewState["statevalue"] = value;
    }
}

그리고 WebForm1 이라는 Page 에 포함된 User Control 에서 WebForm1 의 상태 값을

1. 저장할 때는 ( (WebForm1)Page ).StateValue = "Value1";
2. 검색할 때(읽어 올 때)는 string strPageValue = ( (WebForm1)Page ).StateValue;

와 같은 형식으로 접근하면 될 것 같습니다.

물론 Page 단의 메서드를 통해서 접근하는 것도 가능할 꺼라 생각되고요...

수고하세요.^^

 

 출처: 데브피아
http://www.devpia.com/Forum/BoardView.aspx?no=61989&ref=61949&forumname=ASPNET_QA


2006년 4월 6일 목요일

C# 보안 권장 사항

다음 목록은 잠재적인 보안 문제를 빠짐없이 망라한 것이 아닙니다. 이 목록에서는 C# 개발자가 주의해야 할 몇 가지 일반적인 문제만을 중점적으로 설명합니다.

# checked 키워드를 사용하여 정수 계열 형식의 산술 연산 및 변환에 대한 오버플로 검사 컨텍스트를 제어해야 합니다.

# 매개 변수에 대해서 항상 가장 제한적인 데이터 형식을 사용해야 합니다. 예를 들어, 메서드에 데이터 구조의 크기를 나타내는 값을 전달하는 경우 정수 대신 부호 없는 정수를 사용합니다.

# 파일의 이름을 기준으로 판단해서는 안 됩니다. 파일 이름의 표현 방식은 다양하며, 특정 파일만을 대상으로 하는 테스트는 우회될 수 있습니다.

# 암호나 기타 중요한 정보를 절대로 응용 프로그램에 하드코딩하지 말아야 합니다.

# SQL 쿼리를 생성하는 데 사용되는 입력에 대해서 항상 유효성을 검사해야 합니다.

# 메서드에 대한 모든 입력에 대해서 유효성을 검사해야 합니다. System.Text.RegularExpressions 네임스페이스의 정규식 메서드는 전자 메일 주소와 같은 경우에 입력 값의 형식이 올바른지 확인하는 데 유용합니다.

# 예외 정보를 표시해서는 안 됩니다. 이러한 정보는 공격자에게 중요한 단서를 제공할 수 있습니다.

# 가능한 한 최소한의 권한으로 응용 프로그램이 실행되도록 해야 합니다. 사용자가 관리자 권한으로 로그인해야 하는 응용 프로그램은 거의 없습니다.

# 자체 암호화 알고리즘을 사용하지 말고 System.Security.Cryptography 클래스를 사용해야 합니다.

# 어셈블리에 강력한 이름을 부여해야 합니다.

# 중요한 정보를 XML이나 기타 구성 파일에 저장하지 말아야 합니다.

# 네이티브 코드를 래핑하는 관리 코드를 주의 깊게 검사해야 합니다. 특히 버퍼 오버런과 관련하여 네이티브 코드가 안전한지 확인할 필요가 있습니다.

# 응용 프로그램 외부에서 전달되는 대리자를 사용할 때는 주의해야 합니다.

# FxCop을 실행하여 어셈블리가 Microsoft .NET Framework 디자인 지침을 준수하고 있는지 확인합니다. 또한 FxCop에서는 200가지 이상의 코드 결함을 찾아내어 경고할 수 있습니다.

FxCop는 http://www.gotdotnet.com/team/fxcop/ 에서 다운로드 가능하며, 상당히 괜찮은 툴입니다.

출처: MSDN

2019년 12월 MS 취약점 패치 주요 사항

서버 관련 주요 중요 취약점 CVE-2019-1470 | Hyper-V 정보 유출 취약성 https://portal.msrc.microsoft.com/ko-KR/security-guidance/advisory/CVE-2019-1470 CVE...