-
ORA-01745와 JDBC의 변수 바인딩 최대 갯수
오류 ORA-01745: 호스트/바인드 변수명이 부적합합니다. 원인 대부분 ,를 잘못넣으면 생긴다. 하지만 JDBC를 통해서 쿼리를 실행하는 경우 또 다른 원인이 존재한다. PreparedStatement를 사용 할 때 ? 가 너무 많으면 발생한다. 즉, 바인딩 할 변수가 너무 많으면 ORA-01745 가 발생하기도 한다. JDBC는 2의 16승인 65,536개까지만 바인딩 가능하다고 한다. 실제로 10만개가량 바인딩을 시도했을 때 해당 에러가 발생했다. 참고 https://dzone.com/articles/too-many-preparedstatement-placeholders-in-oracle Read More
-
URL 도메인의 @ 기호
모의해킹 진행 중 처음보는 피싱 방법을 알게되었다. (실제로 언제부터 사용된지는 모르겠다..) 바로 callbackURL에 @를 넣어서 피싱 사이트로 연결시키는것. (혹은 리다이덱트 URL 등등) 예를 들면 ?callbackURL=https://www.naver.com@google.com 이런식이다. 네이버 링크처럼 보이지만 https://www.naver.com@google.com를 호출해보면 네이버가 아닌 구글로 연결된다. 이렇게 정상적인 도메인 뒤에 @를 넣고 피싱 도메인을 넣으면 피싱 사이트로 연결이 된다. @는 무엇일까? HTTP URL은 URI 문법을 따른다. 그럼 URI에서 @는 어떻게 인... Read More
-
[Spring] RequestContextHolder의 getRequestAttribute가 null이다?
Spring이 제공해주는 RequestContextHolder는 Request 정보를 쉽게 갖고올 수 있는 참 좋은 유틸이다. 일반적으로 ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest()로 요청 정보를 가져온다. 하지만 getRequestAttributes()이 null이라 오류가 나는 경우가 있다. 가장 많이 겪은 원인은 메서드의 주석을 보면 알 수 있다. Return the RequestAttributes currently bound to the thread or null if none bound ... Read More
-
[Spring] request의 inputstream (body) 재활용
Spring에서 @RequestBody 를 이용해 body 데이터를 받을 떈 내부적으로 HttpServletRequest의 inputStream에서 값을 가져온다. inputStream은 흐름이기때문에 미리 마킹해놓지 않으면 read()로 한 번 읽은 내용을 다시 읽을 수 없다. 때문에 @RequestBody로 선언한 객체가 만들어지기 전에 먼저 inputStream.read()를 실행시키면 이 후 값을 읽을 수 없어서 Required request body missing 이라는 에러가 나온다. 그래서 inputStream에 있는 body의 내용을 다시 사용 할 수 있게 request를 수정했다. Http... Read More
-
[JAVA] feign url values must be not be absolute 오류
오류 @FeignClient(url="http://localhost:8080") public interface MyFeignClient{ @GetMapping("{url}") Object getCall(@PathVariable String url, @RequemstParam("param") String param); } @Service public MyService { @Autowired MyFeignClient myFeignClient; public Object getCall() { return myFeignClient.getCall("http://localhost:8080... Read More