2024/05 4

[Spring] Ajax 통신에서 Csrf Header, Token 정보를 넘겨주는 방법

오늘은 CSRF(Cross-site request forgery) 공격을 막기 위한 방법에 대해 알아보려고 합니다. 우선 Spring Security에서 csrf 설정을 활성화한다는 전제가 있어야 하고, 이 전제를 기반으로 Ajax Post 요청에서 Request Header에 Csrf Header, Token 정보를 넘겨줄 수 있게 됩니다.  CSRF 공격이 무엇인지 알아보고, 왜 Client의 Request에 csrf 설정을 해줘야 하는지까지 설명드리겠습니다.  CSRF(Cross-site request forgery, 사이트 간 요청 위조) 사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격하나의 사례..

Java/Spring 2024.05.29

[Java] inner class를 static으로 선언해야 하는 이유

inner class를 static으로 "반드시" 선언해야 하는 이유가 2가지가 있습니다.  첫째, 위 코드를 기반으로 봤을 때, inner class 바깥 클래스의 인스턴스와 암묵적으로 연결되어 GC의 메모리 수거가 잘 수행되지 않을 수 있습니다. 그래서 Intellij에서 inner class를 non-static으로 선언할 경우, static으로 바꾸라는 경고표시가 생깁니다.  사진과 같이, static으로 선언한 경우 외부 참조를 하지 않는 것을 육안으로 확인할 수 있습니다. 둘째, 이러한 외부 참조를 저장하려면 시간과 공간이 많이 소비됩니다. 그래서 외부 참조를 막을 수 있도록 static 키워드를 붙여주는 것이 합리적입니다.  결론멤버 클래스의 인스턴스 각각이 바깥 인스턴스를 참조해야 하는 상..

Java/Java Concept 2024.05.16

[Java] enum 비교에서는 equals(), == 둘 중 어떤 것이 적합한가?

enum class에서 비교는 ==가 적합한가 equals()가 적합한지에 대해서 고민해 봤습니다. 자바의 enum class는 singleton이기 때문에, == 비교가 적합하다고 생각했습니다. (equals() 보다 속도도 빠릅니다)왜냐하면 런타임 시점에서의 NPE 방지뿐만 아니라, 컴파일 시점에 타입 호환성까지 check해주는 장점이 있기 때문입니다. equals() 비교를 통해 값을 비교했다면 그대로 컴파일되었을 것이라고 판단됩니다. enum의 class를 뜯어봤을 때, 결정적으로 == 비교를 하는 것을 확인할 수 있습니다. 즉, == 비교를 내부적으로 하고 있지만, 위의 장점들 뿐만 아니라 비교하려는 상수를 앞에 둬야 NPE를 방지할 수 있는 번거로움을 없애려면 == 비교가 적합하다고 생각합니다..

Java/Java Concept 2024.05.16

[대만] 🇹🇼 타이베이 (Taipei) 여행 준비물

다음 달 여행 계획이 있는데, 대만에 가기 전 준비물에 대해 알아보도록 하겠습니다. 1. 항공권 구매Trip.com (트립닷컴) 구매 완료  2. 호텔 및 숙소 예약agoda 앱에서 숙소 예약 완료 3. 트래블월렛 (travel wallet) - 환전 앱카드 신청(1주일이면 도착)대만 TWD(실시간 환율이 적용되어 대만 달러가 들어옵니다)Bank of Taiwan ATM기에서 수수료 없이 출금 가능무료 수수료: Google Map: Cathay United Back 검색 후 해당 은행으로 이동4. Esim 예약 kkday.com에서 주문 완료 (4일 (일당 2G), 대략 6000원)여권사진, 이메일, 폰번호 등 간단한 정보 입력여행용 지갑동전을 담을 수 있는 가방 (필수) 기기돼지코(변압기) 110v대만..

일상/여행 2024.05.13