본문 바로가기

Spring/Java29

[자바 시큐어코딩] TOCTOU 경쟁 조건 보안 수정 TOCTOU 경쟁 조건 체커는 리소스의 상태를 확인하고 실제 사용하는 시간 간의 차이로 인해 발생하 는 경쟁 조건을 검출합니다.리소스의 상태를 확인하고 그 결과에 따라 리소스에 접근하는 코드를 작성할 때는 보통 리소스에 접근 하는 순간에도 조금 전 확인한 그 상태가 유지되고 있을 것을 가정하게 됩니다. 하지만 그 사이에 리소 Sparrow 보고서 6 스의 상태는 변할 수 있으며, 특히 파일과 같은 리소스는 프로그램이 다중 스레드로 작성되지 않더라 도 다른 프로그램이나 운영 체제에 의해 상태가 변할 수 있습니다. 이러한 경쟁 조건으로 인해 프로그 램이 의도하지 않게 동작하거나 예외가 발생하거나 공격의 진입로로 활용될 수 있습니다. 하나의 자원에 동시다발적으로 여러 프로세스가 접근해서 컨트롤을 하게 되는 경.. 2024. 12. 26.
[Java Spring ] profiles 정보 가져오기 자바 스프링에서 profiles 정보를 가져오는 방법을 알아보자 System.getProperty()을 활용하여 가져오면 된다. - System.getProperty("spring.profiles.active"); [예시] System.out.println("======================================>>> " +System.getProperty("spring.profiles.active")); [결과] 더 상세한 정보는 아래 블로그 참고하세요~! 자바 스프링에서 Profile 정보 가져오기 (Spring Profiles Active) 스프링 프로젝트에서 Profile 설정은 기본입니다. local, dev, qa, stg, prod 등 개발 환경에 맞게 지정해 줍니다. 가끔 지.. 2024. 1. 3.
[java/자바] Session 세션 사용 방법 Session은 클라이언트 별로 서버에 저장되는 정보이다. 쿠키는 사용자의 컴퓨터에 저장되지만 Session(세션)은 서버에 저장되므로, 보안이 필요한 데이터는 쿠키보다 세션에 저장하는 것이 안전하다. 세션은 서버가 종료되거나 유효시간이 지나면 사라진다. 1. 세션 개념 웹 클라이언트가 서버에게 요청을 보내면 서버는 클라이언트를 식별하는 session id를 생성한다. 서버는 session id로 key와 value를 저장하는 HttpSession을 생성하고, session id를 저장하고 있는 쿠키를 생성하여 클라이언트에게 전송한다. 클라이언트는 서버 측에 요청을 보낼 때, session id를 가지고 있는 쿠키를 전송한다. 서버는 쿠키의 session id로 HttpSession을 찾는다. 2. 세션.. 2023. 4. 17.
[java] 자바 문자열 문자를 n번 반복하기 다양한 방법 자바 문자열 문자를 가져와 표현하는 7가지 방법에 대해서 알아보자! 1. 단순 방법 for 루프를 사용하여 문자열의 각 문자를 처리 이 접근 방식은 길이가 더 작은 문자열에 매우 효과적이다. class Main { // 문자열의 문자 n반복 public static void main(String[] args) { String s = "Snow hong IT블로그"; // 간단한 for 루프 사용 for (int i = 0; i System.out.print(new .. 2023. 4. 14.
[java] 문자열 분리하기 - StringTokenizer 클래스 StringTokenizer 클래스란? StringTokenizer 클래스는 하나의 문자열을 여러 개의 토큰(token)으로 분리하는 클래스이다. 즉, 문자열을 구분자로 분리해주는 클래스이다. 만약 BufferedReader 클래스의 메서드로 입력을 읽어들인다면 라인 단위로 읽어들인다. BufferedReader 클래스만이 아니더라도, 공백 기준으로 혹은 콤마 기준으로 문자열들을 분리한다던가, 특정 문자에 따라 문자열을 나누고 싶을 때 StringTokenizer를 이용한다. StringTokenizer 라이브러리 import java.util.StringTokenizer; java.util.StringTokenizer를 import해야 사용가능하다. 생성자(Constructor) //1. 절달된 매개변.. 2023. 4. 13.
728x90