본문 바로가기

Java

코드로 배우는 스프링 웹 프로젝트 개정판 파일 업로드 파트 보안 취약점 본 게시물은 코드로 배우는 스프링 웹 프로젝트 개정판 (구멍가게 코딩단) 의 책을 보던중 파일 업로드 관련 부분에서 파일 업로드 확장자를 필터링 하는 부분에 보안 취약점 부분이 발견되서 이를 공유하고 해결방안을 간단하게 작성하고자 합니다. 우선 위의 책을 보셨다는 가정하에 설명을 드리고자 합니다. 책의 챕터 22를 보면 파일의 확장자와 크기의 제한을 클라이언트 부분에서 javascript를 통해 관리하고 있습니다. 책의 코드는 다음과 같습니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152$(document).ready(function(){ var regex = new RegExp..
Spring에 커넥션풀(Connection Pool) 등록 - HikariCP 커넥션풀(Connection Pool) 이란? 위의 그림처럼 풀(Pool)속에 데이터베이스와의 연결(커넥션)들을 미리 만들어 두고 데이터베이스에 접근시 풀에 남아있는 커넥션중 하나를 받아와서 사용한뒤 반환하는 기법을 말한다. (스레드 풀과 비슷한 개념이라 보면 된다.) 웹 애플리케이션의 경우 다수의 사용자가 데이터베이스에 접근해야 하는 상황이 생겼을때 사용자들이 요청할때마다 연결을 만들고 해제하는 과정을 진행하면 비효율적이다. 따라서 커넥션풀을 이용하여 미리 여러 연결을 만들어놓고 필요한 사용자가 요청시 미리 만들어놓은 연결을 주는 형식인 커넥션풀이 더욱 효과적이다. 커넥션풀은 다양한 구현체들이 존재한다. 그리고 Java에서는 커넥션풀을 사용할때 javax.sql.DataSource 라는 인터페이스를 사..
[Spring 게시판 만들기] 00.프로젝트 생성 본 프로젝트는 스프링 MVC 공부를 목적으로 하고있다. 먼저 어떤 기능을 하는 게시판을 만들것인지 설계해보자. 기본적인 기능을 생각해보면 다음과 같다. 1. 로그인, 회원가입 구현2. 기본적인 CRUD[Create(생성), Read(읽기), Update(갱신), Delete(삭제)] 여기에 추가적인 아이디어를 생각해 보았다. * 게시글 추천 시스템 (추천수 TOP 5 게시글 표시)* 관리자, 일반유저 계층 분리 개발툴은 이클립스 ee 자바는 8버전을 사용한다. Spring STS를 사용하여 프로젝트를 생성해보자 이클립스에서 Help - Eclipse marketplace를 선택하면 다음의 화면이 나온다 Find에 sts를 검색해보면 다음과 같다(2019.01.01 기준) 이때 두번째 항목인 Spring ..