JPA는 엔티티 객체와 DB 테이블을 매핑하여 객체지향적으로 데이터를 다룰 수 있게 해주는 ORM 기술이다. 하지만 내부적으로는 영속성 컨텍스트, 변경 감지(Dirty Checking) 등 동작 원리를 이해하지 않으면 예상과 다른 쿼리나 성능 문제가 발생할 수 있다. 따라서 단순 CRUD 수준을 넘어서 JPA의 동작 방식과 생명주기를 이해하는 것이 실무에서 매우 중요하다.
Read
Latest Posts · Page 1 of 1
개인 프로젝트에서 페이스북 소셜로그인을 구현하려는데 해보니까 진짜 쉽지만 초반에는 하루 이틀정도 헤멨던 것 같다. Spring.io에서 예제들을 열심히 찾았지만 Spring boot 사용을 전제로 해서 내놓은 것이라서 예시에서는 자동적으로 되던 것이 당연히 내 프로젝트에서는 안됐고 적지않은 구글링을 했어야 했다.
ReadHttpServletRequestWrapper 를 상속한 확장 클래스를 만들어 getParameter, getParameterValues, getHeader 메서드를 오버라이드하고, 네이버의 lucy-xss-filter 라이브러리로 Escape 처리한 값을 리턴하도록 구현한다. lucy-xss-filter는 XssPreventer(단순 문자열 전체 Escape)와 XssFilter(HTML 태그가 필요한 본문은 스크립트만 선별 필터링) 두 가지를 제공하며, 파라미터명이 content로 시작하면 XssFilter를, 그 외에는 XssPreventer를 적용한다. Spring의 OncePerRequestFilter 를 상속한 CrossSiteScriptingFilter를 만들어 GET/POST 요청에만 XSS 필터를 적용하고, web.xml에 등록하면 비즈니스 로직에 손대지 않고 일괄 처리가 완성된다.
Read