본문 바로가기

study/100 days (100일 챌린지)

[웹개발 100일] Day 18 - ASP.NET 백엔드 기초 보안 처리 (XSS 입력값 검증)

반응형

 

 

 

 

 

엄마 백엔드 언제 끝나요 ..?

 

오늘은 너무 집중도 안 되고 별로 하고 싶지 않아서 (백일챌 시작하고 이런 말 처음 하는 듯 ㅋㅋ) 기초 보안 좀 깔짝대다가 남의 포폴 구경했다.

 


https://www.hostinger.com/tutorials/web-developer-portfolio

 

25 Web Developer Portfolio Examples to Take Inspiration From

Having a good web developer portfolio is essential for social proof. Find inspiration from the top 25 web developer portfolios.

www.hostinger.com

 

링크드인 보다가 오랜만에 궁금해져서 찾아본 웹개발자 포폴 사이트들,,

백일챌 끝나면 나도 포폴 리뉴얼 해야겠음 !

 

https://portfolio-jihye-lisa.netlify.app/

지금 갖고 있는 포폴,, 진짜 별 거 없지만 궁금하면 보세여

 

 


🚀 요약

작업 시간: 2시간
✅ 기초 보안 처리 (XSS 방지)

 

 


🚀 XSS(Cross-Site Scripting) 방지

 

<script>alert('Hacked!');</script>

XSS 방지를 하지 않으면 누군가 악의적으로 입력값에 악성 스크립트 코드를 넣어 사용자 브라우저에서 실행되도록 할 수 있다.

 

using System.Web;
string safeInput = HttpUtility.HtmlEncode(userInput);

 

위와 같은 상황을 방지하기 위해 HttpUtility.HtmlEncode()를 사용해야 한다.

 

&lt;script&gt;alert(&#39;Hacked!&#39;);&lt;/script&gt;

HttpUtility.HtmlEncode()는 위의 예시 스크립트에 HTML 이스케이프를 적용하여 다음과 같이 바꿔준다.

특수 문자를 변환하여 HTML 엔터티로 인코딩해, <script> 태그가 아닌 단순한 문자열로 인식되도록 하는 것이다.

 

백엔드에서는 서비스, 컨트롤러, SaveChangesAsync() 등에 추가해 보안을 강화할 수 있다.

이와 같이 입력값을 필터링 하는 것도 필요하지만, 프론트엔드에 출력할 때도 동일한 처리를 해주면 좋다.

 

document.getElementById("commentBox").innerText = userComment;

innerHTML 대신 innerText 사용하면 기본적으로 XSS 방지가 가능하다!

 

 

 

반응형