2010-02-07 4 views
4

저는 새로운 프로젝트에 대한 작업을 계획 중이며 ASP.NET MVC를 사용하려고합니다. 내 프로젝트는 JQuery와 AJAX를 사용할 계획이다 (비 JS 클라이언트도 지원 될 예정 임). 표준 ASP.NET 배경에서 오는, MVC 패러다임 (Scott Guthrie 큰 도움으로) 주위에 내 머리를 얻으려면 여전히 노력하고있어. 그러나, MVC를 사용하여 내 주요 관심사는 보안 측면입니다. ASP.NET에 대한 많은 보안을 수행했으며 다양한 공격 경로를 처리하는 방법을 알고 있습니다. ASP.NET MVC로 보안을 다시 배워야합니까? 내가 읽어야 할 새로운 위협이나 오래된 위협을 처리하는 새로운 방법이 있습니까? 나는 ASP.NET MVC 서적 (보안에 대한 장을 가지고 있음)을 주문했지만 다른 사람의 경험에 대해 알고 싶습니다.ASP.NET MVC를 처음 사용 - 보안을 다시 학습해야합니까?

감사합니다.

답변

2

보안상의 의미에 따라 다릅니다.

인증은 기본적으로 동일하지 않습니다. 양식 인증이 지원되고 권장되며 제어기 또는 제어기 조치에 [Authorize] 속성 만 붙이면됩니다. 거기서 배울 정도는 아닙니다.

ViewState가 없어 졌으므로 ViewState 유효성 검사 또는 해당 kludge에 대해 걱정할 필요가 없습니다.

XSS를 언급하는 경우 거의 같습니다. 당신은 출력 데이터를 탈출해야하고 그것은 아주 쉽게 할 수있다 : 내가 당신을 생각할 수

<%= Html.Encode(Model.SomeString) %> 

유일한 것은 CSRF/XSRF를 처리 조금 다른 찾을 수 있습니다. 다행히도 대부분이 이미 built in to the framework입니다.

따라서 전체적으로 ASP.NET MVC의 보안 학습 곡선은 아키텍처 자체의 학습 곡선만큼 가파르지 않습니다.

+0

덕분에 학습 곡선을 극복하는 것이 훨씬 쉬워졌습니다. 부가 메모에서'UpdateModel()'을 사용하면 자동으로 HTMLEncode로 데이터를 처리합니까? 모델 객체를 전달할 때 수동으로해야한다는 것을 알고 있지만 UpdateModel을 사용할 때 무엇을해야할지 확실히 알지 못합니다. 다시 한번 감사드립니다. – keyboardP

+0

@TenaciousImpy : 당신이 제시하는 데이터가 신뢰할 수없는 출처에서 온 것일 때 인코딩/이스케이프에 대해 걱정할 필요가 있습니다. 예외는 거의 없지만 들어오는 것을 위생적으로 정리할 필요는 없습니다 (SQL 쿼리와 모든 것을 매개 변수화한다고 가정합니다). 하지만 정확한 질문에 대답하기 위해, UpdateModel은 HTML 인코딩을하지 않습니다. 그 이유는 표시되는 시간에 두 번 인코딩했기 때문입니다. 사이트 방문자는 단어 중간에 이상한 도피 '>'을 보게됩니다. . – Aaronaught

+0

ASP.NET MVC 2에서'<% : Model.SomeString %>'는 자동으로 텍스트를 인코딩합니다. '= '대신에':'에주의하십시오. – Omar

관련 문제