본문 바로가기

개발/ASP.NET35

ASP.NET MVC : 어플 단위에서 설정 가능한 security 대책 방법 ASP.NET MVC의 웹 어플리케이션의 보안과 관련해서 업무중에 실시한 보안 대책의 일부를 정리해 보았습니다. 사내 기준으로 웹 어플과 인프라 쪽의 보안 대책을 동시에 진행했었습니다만 저는 웹 어플만을 다뤘기 때문에 인프라쪽의 대책에 대해서는 별도로 언급하지 않겠습니다. 1. Cookie 설정 Web.config SSL의 경우에만 Cookie를 유효화 시킵니다. (예) http로 접속할 경우엔 Cookie가 무효이므로 유저 로긴 불가) 2. Response Header 설정 Web.config [X-Frame-Options:SAMEORIGIN] iframe의 제한을 자기자신과 생산처가 같은 프레임 안이었을 경우에만 가능하도록 제한 합니다. [X-XSS-Protection:1; mode=block] XS.. 2019. 1. 28.
.NET MVC의 Web API에 Basic인증을 적용하는 방법 ↑의 「Web API」를 선택해서 작성한 프로젝트를 기준으로 합니다. Basic Authentication in ASP.NET Web API 위 링크의 MSDN에 매우 자세하게 설명되어 있기에 기본적인것은 그대로 따라하면 됩니다만 개인적으로 코딩했던 부분을 정리해 보았습니다. BasicAuthHttpModule.cs IHttpModule를 상속받아서 Basic인증을 처리할 모듈을 만듭니다. using System; using System.Linq; using System.Net.Http.Headers; using System.Security.Principal; using System.Text; using System.Threading; using System.Web; using TestProject.Ba.. 2019. 1. 25.
Json내의 html태그의 이스케이프(Escape) 처리 1. JavaScriptSerializer:string ⇒ JSON변환 using System.Web.Script.Serialization; var json = new JavaScriptSerializer().Serialize("A->B"); // "\"A-\\u003eB\" HTML태그의 이스케이프(escape) 처리 JavaScriptSerializer를 이용하여 JSON으로 변환할 경우, HTML태그는 \u형식의 유니코드로 이스케이프(escape) 처리됩니다. 그렇기 때문에 JSON안의 HTML태그를 그대로 사용하는 것이 불가능하며, “\u003e”⇒”>”와 같이 재차 변환을 해야할 필요가 있습니다. “B\"" HTML태그를 그대로 두고 JSON으로 변환시키고 싶을 경우엔 Json.NET를 사용합니다. 2019. 1. 25.
ASP.NET MVC : Ajax로 리스트 오브젝트를 Controller로 전달하기 Ajax로 리스트 오브젝트를 Controller로 전달하기 JS var things = [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; $.post('@Url.Action("PassThings")', { things: things }, function () { $('#result').html('"PassThings()" successfully called.'); }); Controller [HttpPost] public void PassThings(IEnumerable things) { // do stuff with things here... } 2019. 1. 24.
ASP.NET MVC : ModelState에서 에러 메세지를 취득하기 ASP.NET MVC : ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환시키기 위 기사에서도 가볍게 다뤘지만 에러 메세지를 키를 이용해서 취득하는 방법을 추가로 정리해 보았습니다. 0. 아래의 내용처럼 ModelState에 에러를 선언하고 에러 메세지(string 리스트)를 취득하기 ModelState.AddModelError("Parameter", "파라미터에 문제가 발생했습니다. P1"); ModelState.AddModelError("Parameter", "파라미터에 문제가 발생했습니다. P2"); ModelState.AddModelError("Parameter", "파라미터에 문제가 발생했습니다. P3"); ModelState.AddModelError(string.Empty,.. 2019. 1. 24.
ASP.NET MVC : ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환시키기 ASP.NET MVC 에서는 보통 Model의 Validation 체크를 한 다음에 에러를 지정할 경우에는 아래처럼 에러메세지를 설정하고 ModelState.AddModelError("", "xx가 없습니다. 다시 한번 확인해 주세요."); View에서 ValidationSummary나 ValidationMessage을 사용해서 에러 메세지를 표시합니다. @Html.ValidationSummary() @Html.ValidationMessage("hoge") 하지만 Ajax에서 json형식의 리턴값으로서 처리를 끝낸 ModelState의 에러 메세지만을 돌려 받아서 화면에 표시하고 싶을때도 살다보면 생기기 마련입니다... ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환시키기 Json으.. 2019. 1. 24.
C# 자동 구현 속성(auto-property) 자동 구현 속성(get/set 생략 가능) public string FirstName { get; set; } 속성 private string firstName; public string FirstName { get { return this.firstName; } set { this.firstName = value; } } 자동 구현 속성이 매우 편하긴 하지만 필요에 따라선 생략없이 구현해야 하는 상황도 있기 때문에 간단히 복습해 보았습니다. 2019. 1. 24.
ASP.NET MVC : 모든 예외 처리를 일괄 관리하기 참고 사이트 Log All Asp.Net MVC Errors ASP.NET MVC의 필터 기능을 사용해서 웹 어플이케이션 내의 모든 예외를 한 곳에서 처리 하도록 설정합니다. App_Start/FilterConfig.cs using log4net; public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters, ILog logger) { filters.Add(new HandleErrorAttribute()); filters.Add(new ExceptionLoggingFilter(logger)); } } ExceptionLoggingFilter.cs public class ExceptionL.. 2019. 1. 24.
ASP.NET MVC : Url에 점 "."을 포함한 문자열을 허용시키기 ASP.NET MVC의 웹 어플리케이션의 URL에 "."을 표함하는 ID를 건내받기 위해 설정한 내용입니다. 대응으로는 Url에 점 "."을 포함한 문자열을 허용 시킬 필요가 있습니다. Web.config의 system.webServer 안에 있는 handlers에 아래와 같이 기술합니다. 사용 예시 2019. 1. 24.