본문 바로가기

기록/Web

(41)
[Mybatis] WARNING: An illegal reflective access operation has occurred 원인 테스트 중 다음과 같은 경고가 발생했다. WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.ibatis.reflection.Reflector (file:/C:/Users/USER/.m2/repository/org/mybatis/mybatis/3.4.1/mybatis-3.4.1.jar) to method java.lang.Object.finalize() WARNING: Please consider reporting this to the maintainers of org.apache.ibatis.reflection.Reflector WARNING: Use -..
[MySQL] [08S01] Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. java.net.ConnectException: Connection timed out: connect. !! 이 글은 Linux 인스턴스 기반입니다 !! 문제 [MySQL] [08S01] Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. java.net.ConnectException: Connection timed out: connect. IntelliJ에 EC2 인스턴스를 연결하려는데 연결 실패가 계속되었다. MySQL 워크벤치로 실행하니 연결 권한이 없다고 해서 권한 설정을 위해 인스턴스를 실행했다. EC2 인스턴스의 MySQL을 원격 접속하는 가이드는 검색하면 꽤 많이 나온..
[IntelliJ] application.properties 과 application.yml의 차이 개요 Spring Boot는 다른 환경에서 동일한 애플리케이션 코드로 작업할 수 있도록 구성을 외부화할 수 있다. Java 속성 파일, YAML 파일, 환경 변수 및 명령줄 인수를 포함한 다양한 외부 구성 소스를 사용할 수 있다. 또, 프로젝트에 외부에서 특정 값들을 받아야 하는 경우가 있다. AWS나 외부 API를 사용하기 위한 secret key, API key가 이에 해당한다. 이러한 값들을 하드코딩하는 경우에는 보안에 취약하다. 따라서 이런 중요한 값들을 application.properties 또는 application.yml 의 외부 설정값을 관리하는 파일에 기록하여 사용한다. 즉, 두 파일 모두 외부 설정값 등을 관리하는 파일이다. STS로 프로젝트를 진행했을 때는 applicatoin.pr..
[Spring Security] There is no Password Encoder mapped for the id "null" 오류 Spring Security5부터는 password 앞에 식별자 정보를 넣어주어야 하는데, 이 처리가 되어있지 않아서 오류가 발생했다. 따라서, 패스워드 형식을 "{식별자 정보}password"의 형태로 지정해주어야 한다. Spring Security에서 제공하는 PasswordEncoder의 종류에 따라 인코딩되는 문자열의 헤더가 달라진다. 예를 들어, BcryptEncoder의 경우에는 식별자 정보에 bcrypt가 지정된다. 일반 PasswordEncoder의 경우에는 noop을 표시해두어 식별자 정보를 지정한다.
[Spring][Ajax] Javascript를 통해 checkBox값 넘기기 Form에서 CheckBox 내용을 컨트롤러로 받을 때 몇가지 주의사항이 있다. checkBox의 내용이 겹치지 않는 것을 감안하여 Set을 사용했는데 제대로 동작하지 않았다. 찾아보니 checkBox의 모든 내용을 가져오기 위해서는 List 형태로 가져와야 한다. Ajax에서 Controller로 넘겨줄 때에도 script 문법에서 Array를 사용하여 배열로 생성해주고, 배열값을 넘겨준다. 그래서 Controller에서 @ReuqestMapping 어노테이션을 사용하여 받을 때에도 '변수이름[]'형태로 받는다. 참고 코드 Ajax function checkForm() { var genreArray = new Array(); $('input:checkbox[name=genre]:checked').eac..
[Spring] @RequestBody와 @ResponseBody @RequestBody와 @ResponseBody는 Spring에서 컨트롤러를 구현할 때 사용하는 어노테이션이다. 두 어노테이션은 모두 웹 페이지와 Java가 통신할 때 객체를 변환하는 역할을 한다. 다음은 두 어노테이션의 차이점이다 @RequestBody : HTTP 요청의 body 내용을 Java 객체로 변환할 때 사용한다. @ResponseBody : Java 객체의 내용을 HTTP 요청의 body로 변환할 때 사용한다. * 비동기 처리 방식 RequestBody와 ResponseBody는 모두 비동기 처리 방식이다. 비동기 처리방식이란, 새로고침 없이 이루어지는 동작이다. 따라서, 서버와 클라이언트 통신 본문(body)에 데이터를 포함해야 한다. 대표적인 방식에는 JSON이 있다. * JSON :..
[Spring Security] CSRF 취약점 Spring Security를 사용하는 경우 간혹 Ajax에서 POST 메소드 호출을 할 때 403 Forbidden 에러가 발생한다. 확인해봤지만 mapping된 url의 문제도 아니고, 데이터의 문제도 아니었다. 이 경우 CSRF의 토큰을 넘겨주지 않아 발생한 오류일 확률이 매우 높다. CSRF (Cross Site Request Forgery) : 사용자의 의지와 관계없이 공격자의 의도로 서버에 특정 요청을 하는 것 예를 들어, 사용자가 서버에 요청을 보낼 때, 공격자가 페이지를 인터셉트하여 위조 후 다른 요청을 서버에 보내는 경우이다. 유사한 공격으로 XSS (Cross Site Scripting)이 있는데, XSS는 클라이언트를, CSRF는 서버를 공격한다는 차이가 있다. 이러한 공격을 예방하기..
[Spring] [xX][mM][lL]"과 일치하는 처리 명령 대상은 허용되지 않습니다. 문제 상황 xml문자열에 대한 파싱을 할때 발생하는 오류이다. "[xX][mM][lL]"과 일치하는 처리 명령 대상은 허용되지 않습니다. 문제 해결 xml파일의 선언 앞의 공백, 줄띄우기 등을 모두 제거한다.

LIST