이슈 누군가 자사 서비스의 메일 발송 기능을 이용해 수 분간 500통 이상의 메일을 발송했다. 메일 내용에는 XSS 공격으로 추측되는 javascript 코드가 포함되어 있었다. response.write(9365865*9010919) 원인 Spring Securiy를 통해 CSRF 토큰을 설정했지만, API 테스트 툴 등으로 뚫리는 것을 확인했다. 경과 및 해결 당시 공격을 통해 DB에 들어왔던 데이터는 컬럼 중 반드시 하나의 스크립트를 포함하고 있었다. 그 외에 컬럼에는 무작위 영문 조합과 testing@example.com 이라는 이메일 데이터가 있었다. 이메일은 모두 인증이 되지않고 실존하지 않는 이메일로 확인되었다. 즉, 메일 발송이 가능한 페이지에 설정해두었던 Mail Validator를 거치..
이슈 The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit 특정 페이지에서 위와 같은 에러가 발생했다. 에러 내역은 65535 byte의 제한을 넘겼다는 내용이다. 원인 JSP 파일의 용량이 65535 byte를 넘기면 특정한 설정 없이 페이지를 배포할 수 없기 때문이다. 경과 및 해결 설정 없이 문제를 해결하려면 jsp:include 기능을 활용해 페이지를 영역별로 쪼개면 가능하다. 배포할 때는 합쳐져서 배포되므로 문제가 발생하지 않는다. 하지만 Include 없이 간단한 설정만으로도 한계 용량을 넘는 JSP 파일을 페이지로 배포할 수 있다. jsp org.apach..
#!/bin/sh MYSELF=`which "$0" 2>/dev/null` [ $? -gt 0 -a -f "$0" ] && MYSELF="./$0" java=java if test -n "$JAVA_HOME"; then java="$JAVA_HOME/bin/java" fi exec "$java" $java_args -jar $MYSELF "$@" exit 1 위와 같은 쉘 스크립트 파일을 작성 후 (stub.sh) cat stub.sh inhouse.client.jar > test.client && chmod +x test.client 위 명령어를 실행하면 JAR 파일을 실행 바이너리 파일을 생성할 수 있다.
개요 spring 3.1 이후로 캐시를 쉽게 사용하는 기능을 지원한다. spring boot 의 경우 기본적으로 cache 기능이 포함되어 있다. 따로 캐시를 저장하는 서버를 둘 수도 있지만, 어플리케이션의 Local memory 를 사용할 수 도 있다. 사용법 import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.concurrent.ConcurrentMapCacheManager; import org.springframework.context.annotation.Bean; import org.springframe..
이슈 자사 서비스의 기능 중 데이터 견적 요청을 위한 페이지가 있다. 고객이 해당 페이지에서 정보를 입력 후 제출하면 Form 데이터는 DB에 저장되고 담당자들에게 메일로 발송된다. DB에 비정상적인 Form 데이터가 있는 것을 발견했다. 라디오 버튼 값이 모두 선택 값으로도 들어오고, 첨부파일 링크와 이메일을 제외한 모든 Input 값이 알 수 없는 영문 조합으로 채워져있었다. 원인 어떤 방법으로 한건지 확실히 파악하지는 못했으나, 수동으로 했던 봇으로 했던 비정상적인 접근을 시도한다는 것만 확인했다. 경과 및 해결 비정상적인 Form 데이터의 이메일 항목은 모두 알 수 없는 영문 조합의 yahoo 이메일인 것을 확인했다. 이후 모니터링을 위해 s3 copy 로직 관련 로그를 추가한 결과, source..
softeer A+B: https://softeer.ai/practice/info.do?idx=1&eid=362 문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 제약조건 두 정수 A와 B는 1이상 9이하의 정수이다. 입력형식 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. 출력형식 각 테스트 케이스마다 "Case #(테스트 케이스 번호): "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다. 입력예제1 5 1 1 2 3 3 4 9 8 5 2 출력예제1 Case #1: 2 Case #2: 5 Case #3: 7 Case #4: 17 Case #5: 7 자바 코드 impor..