2010-01-13 3 views
4

ASP.NET MVC 응용 프로그램에서 크로스 사이트 스크립팅에 대해 최적의 보호 방법을 찾으려고합니다. 필자는 Microsoft의 AntiXSS 라이브러리를 사용하여 기본적으로 두 가지 수준으로 보호하려고했습니다. 1) 일반 텍스트 상자 (일반 텍스트 만 포함해야하는 텍스트 상자 및 2)를 보호합니다. HTML을 생성 할 수있는 서식있는 텍스트 상자를 보호합니다. 라이브러리 자체는 매우 간단하지만 유효성 검사를 배치 할 위치를 결정하는 데 어려움이 있습니다. 강력하게 형식화 된 HTML 도우미를 사용하고 모델/뷰 모델을 직접 바인딩하고 각 동작 방법에 AntiXSS를 개별적으로 적용하지 않으려합니다. 또한, 내 모델/viewmodel의 속성 중 하나에 HTML을 전달하는 경우 요구 사항 인 게시물 작업에서 validateinput을 해제하고 싶지는 않습니다.ASP.NET MVC에서 AntiXSS 호출을 넣을 위치에 대한 제안

ActiveX MVC에 AntiXSS를 삽입하여 뷰 렌더링 (디코딩) 전에 그리고 동작 필터 (인코딩)에 들어가기 전에 적용 할 수있는 곳이 있습니까? 사전

답변

2

에서

덕분에 당신은 System.Web.Mvc.ControllerOnActionExecuting 방법을 무시하고 현재 실행중인 어떤 조치를 결정하기 위해 OnActionExecutingActionExecutingContext 인수에 ActionDescriptor 때에 프로퍼티를 사용할 수 있습니다. 그런 다음 ActionExecutingContext에서 ActionParameters을 수정하여 인코딩 할 수 있습니다.

장난 꾸러기 콘텐츠 (AntiXss.GetSafeHtml)를 확인하는 용도로만 사용할 계획입니까, 아니면 인코딩 (AntiXss.HtmlEncode)을 계획하고 계십니까? 후자의 경우 출력 형식을 HTML로만 제한하므로 생각할 것입니다. 아마도 지금은 괜찮 겠지만이 데이터가 다른 곳에서 사용될 경우 제한 될 수 있습니다.

+1

더 나은 해결책은 동일한 필터링을 수행하는'ActionFilterAttribute'를 만드는 것입니다. 그렇다면'ActionDescriptor'를 사용하여 액션을 구별 할 필요는 없겠지만, 액션을 필요로하는 컨트롤러 액션에 속성을 넣을 수 있습니다. – jeffesp

관련 문제