안녕하세요. 코난 김대우 입니다.
최근 WebMatrix와 ASP.NET 게시판에 질문들이 무섭게 올라오는걸 보니 슬슬 발동 거시는 분들이 많이 계신 것 같습니다.

먼저 ASP.NET Web Pages와 Razor로 고생해본 경험을 살려 몇 가지 꼭 알아 두시면 좋을 내용을 FAQ로 적어 보도록 하겠습니다.

ASP.NET Web Pages는 가장 최신의 웹 개발 플랫폼이며, 안정성과 보안성을 목표로 개발 되었습니다.
가장 최신의 플랫폼인 만큼 몇가지 보안 강화 측면에서 있을 수 있는 이슈들을 미리 알아 두시면 좋습니다.

그 중 대표적인게 아마도 Html.Raw와 Request.Unvalidated 처리일 듯 하네요. 더 높은 보안성 제공을 위한 기본 기능이니 꼭 미리 살펴 두시길 바랍니다.

예제를 먼저 살펴 보지요. 

 

<!DOCTYPE html>
<htm>
<head>       
    <meta charset="utf-8" />       
    <title></title>   
</head>   
<body>
   
    @{
        // ASP.NET Web Pages Razor에서 HTML을 찍으려면?
        var str = "<b>안녕</b>"; 
        <li>@str</li><br/>
        <li>@Html.Raw(str)</li><br/>
        //개발자가 의도하지 않은 HTML 출력 가능성. 보안상의 이유로 Html.Raw()를 이용 해야만 HTML처리됨.
    }
    <form method="post" action="/">           
        <label for="description">글을 입력 하세요:</label>           
        <textarea name="description"></textarea>           
        <br />           
        <input type="submit" value="Submit"></input>       
    </form>       
    <br />       
    @if (IsPost) {
        //검증되지 않은 HTML을 Request로 받을 경우 개발자가 의도하지 않은 잠재적인 보안 위협이 있을 수 있음.
        //Textarea에 HTML 값을 넣고 테스트 하면? 마찬가지로 잠재적 보안 이슈 경고
        //A potentially dangerous Request.Form value was detected from the client
        //이런 경우 POST 값을 Request 하기 위해 Request.Unvalidated 를 이용.
       
        //오류 유발을 위해, 주석을 풀고 테스트 해 보세요.
        <div>               
            @* 입력된 내용 바로 받으면 Validation 오류 : @Request("description") *@           
            Validation을 사용 안함 : @Request.Unvalidated("description")
        </div>        }   
    </body>
</html>

 


예를 들면,

게시판의 글내용 부분에서 HTML 입력을 받으실 경우가 있습니다.

이때, Post받는 페이지에서 바로 Request로 받으면  “A potentially dangerous Request.Form value was detected from the client “이라는 오류와 함께 잠재적인 보안 이슈를 경고하게 됩니다.

 

기존 ASP나 PHP 기반으로 개발 하셨다면 아마도 조금 의아하실지 모르겠습니다만, 최근 XSS 와 같은 “세션 하이재킹(세션 라이딩)” 이슈를 기본적으로 방지할 수 있는 높은 보안성을 기본 제공해, 개발자가 의도하지 않은 보안 위협을 최소화 가능한 보안 기능입니다.

도움 되시길 바랍니다. – 이슈에 도움 주신 김태형님과 김수영님 감사합니다.

PS. web.config 를 수정해 전체 Request에 대해 검사를 안 할 수도 있지만 다양한 형태의 XSS 등의 방어를 위해 권장해 드리지 않습니다.


참고자료:
http://blogs.msdn.com/b/scothu/archive/2010/10/06/web-pages-beta-2-request-validation.aspx
http://www.asp.net/learn/whitepapers/aspnet4/breaking-changes#0.1__Toc256770147

No. Subject Author Date Views
Notice [공지] 이렇게 SQLER에서 처음 글쓰기를 시작해 보는건 어떨까요? [1] 코난 2010.08.19 113010
78 VS 2010 SP1(new WebPI instraller) [5] 제라드(하영진) 2011.03.16 10004
77 mvcConf - ASP.NET MVC 온라인 컨퍼런스 코난(김대우) 2011.03.15 11351
76 [Tip] Razor에서 JSON for .NET을 이용한 JSON 데이터 형식 쉽게 만들기 [3] 달빛(안흥문) 2011.03.14 16802
75 Visual Studio 2010 서비스팩1 공식발표 [1] 코난(김대우) 2011.03.09 11012
74 Visual Studio로 ASP.NET Web Pages 를 쫌만 더~ 잘 써보자 [2] 코난(김대우) 2011.03.08 16960
73 [Tip] Razor에서 저장 프로시져의 실행 및 반환 값 받기 [5] 달빛(안흥문) 2011.03.07 10364
72 WebMatrix 론칭 세미나 발표 영상 - Session 1: 웹사이트 제작의 새로운 패러다임, WebMatrix - 김대우, 고영수, 김성호 코난(김대우) 2011.02.21 15339
» [FAQ] ASP.NET Web Pages의 Html 문자열 보안 처리 - Html.Raw와 Request.Unvalidated 처리 코난(김대우) 2011.02.18 13539
70 WebMatrix 정식버전의 새로운 기능과 변경된 부분 소개 - 릴리즈 노트 코난(김대우) 2011.01.25 23358
69 드디어~ WebMatrix 정식버전에 맞게 한글 무료 eBook을 최신 코드로 수정 했습니다. 바로 다운로드 하세요~ [8] 코난(김대우) 2011.01.24 12878
68 [행사종료] WebMatrix 공식 발표 세미나!!! - 코난이도 나옵니다. ^_^ [16] 코난(김대우) 2011.01.17 17375
67 WebMatrix 정식버전이 나왔어요. [4] 대혀니 2011.01.14 9521
66 코드매쉬 행사에서 마이크로소프트가 WebMatrix 이벤트를 전세계에 생중계 합니다. [5] 코난(김대우) 2011.01.06 9945
65 [동영상] jQuery와 Razor 웹 개발 세미나 영상 / 김수영 MVP [2] 코난(김대우) 2010.12.13 16559
64 WebMatrix에서 단축 URL(URL Shortener) Helper 사용 코난(김대우) 2010.12.13 15624
63 WebMatrix의 내장 DB인 SQL Compact 4.0 에서 페이징 구현 코난(김대우) 2010.12.13 13224
62 WebMatrix Beta3의 새로운 기능과 변경된 부분 소개 - 릴리즈 노트 [3] 코난(김대우) 2010.12.08 18527
61 WebMatrix 베타3에 맞게 한글 무료 eBook을 최신 코드로 수정 했습니다. [2] 코난(김대우) 2010.12.08 14574
60 WebMatrix 베타3에 언어 깨짐 현상이 있는 듯 합니다.-해결됨 [2] 코난(김대우) 2010.12.03 11289
59 Razor- Custom Helper와 Function 만들기 [1] 우주인(김재훈) 2010.12.03 12450





XE Login