본문 바로가기

C#27

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.
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.
XML 형식의 string 문자열을 파싱하기 파싱할 XML의 내용 이름 주문1 주문2 단품 항목의 값을 취득할 경우 using System.Xml; string xml = {파싱할 XML의 문자열}; XmlDocument xml = new XmlDocument(); xml.LoadXml(xml); var customerName = node.SelectNodes("CustomerName")[0].InnerText; 리스트 항목의 값을 취득할 경우 using System.Xml; string xml = {파싱할 XML의 문자열}; XmlDocument xml = new XmlDocument(); xml.LoadXml(xml); XmlNodeList nodeList = xml.SelectNodes("/Data/OrderList/OrderData"); i.. 2019. 1. 23.
ASP.NET MVC : 화면상에서 파일 업로드 하기 ASP.NET MVC 에서 화면에서 파일 업로드 기능을 추가 하는 방법입니다. 방법 1. MVC 기능을 이용한 파일 업로드 Upload.cshtml @using (Html.BeginForm("Upload", "Home", FormMethod.Post)) { @Html.AntiForgeryToken() 파일 추가 } HomeController [HttpPost] [ValidateAntiForgeryToken] public ActionResult Upload(FormCollection formCollection) { var fileName = string.Empty; if (Request != null) { HttpPostedFileBase file = Request.Files["uploadFile"]; /.. 2019. 1. 23.
ASP.NET MVC : CSV 파일을 작성해서 다운로드 하기 ASP.NET MVC에서 CSV 파일을 다운로드 할 경우의 샘플 코드입니다. test.cshtml CSVダウンロード test.js $('.btnCsvDownloadList').click(function () { var documentUrl = document.URL; var baseUrl = documentUrl.substring(0, documentUrl.indexOf('currentPageName')); // baseUrl : 호출할 Controller까지의 url을 추출한 내용. url이 가변성일 경우를 전제로 한다. var mySiteUrl = 'http://mysite.com' // mySiteUrl : 고정 url이 있을 경우엔 고정치를 설정. location.href = mySiteUrl +.. 2019. 1. 23.
Entity Framework에서 제일 최근에 갱신된 레코드를 추출하기 Entity Framework에서 제일 최근에 갱신된 레코드를 추출하는 방법을 정리해 보았습니다. DB샘플 tb1 Id DetailId LastUpdatedAt 1 101 2017-02-01 01:00:00 2 102 2017-02-01 10:00:00 3 103 2017-02-02 01:00:00 4 104 2017-02-01 01:00:00 5 105 2017-02-02 01:00:00 tb2 DetailId Name 101 Name1 102 Name2 예시1. tb1에서 같은 DetailId를 가진 복수의 레코드 중에서 제일 최근에 갱신된 레코드를 추출 var list = (from t in db.tb1 group t by t.DetailId into g select g.OrderByDescendi.. 2019. 1. 23.
Entity Framework에서 SQL문을 직접 실행해서 결과 취득하기 SQL쿼리를 그대로 Entity Framework에서 실행하고 싶을 경우의 사용법입니다. SELECT var testList = new List(); var test = DbContext.Database.SqlQuery("SELECT item_id, details FROM item WHERE item_type = 1;"); if (test != null) { testList = test.ToList(); } INSERT/UPDATE int updateResultCount = DbContext.Database.ExecuteSqlCommand("UPDATE item SET item_type = '2' WHERE item_id = 11;"); SQL -> IQueryable string sql = "SELEC.. 2019. 1. 23.