728x90

개발 하는 중 200

Spring, 403 AccessDenied 오류(적용하지 않은 어노테이션이 적용됨)

문제 발생기능 : User가 자신의 정보를 수정할 수 있게 하는 엔드포인트 추가오류 : 403 AccessDenied 문제 발생 분석관리자인지 아닌지 확인하는 커스텀 어노테이션 (@CheckAdminUser) 을 추가하지도 않았는데 관리자 여부 확인 과정을 거치는 바람에 "권한 없음"으로 오류 발생 정리      • @CheckAdminUser 어노테이션이 있는 다른 메서드가 UserController 안에 존재함.     •  새로 만든 메서드에는 @CheckAdminUser 가 없음.     • 그런데도 관리자 체크가 실행됨 → 예상치 못한 403 또는 AccessDenied 발생. 원인 Spring에서 HandlerMethod는 컨트롤러 메서드 하나에 해당하지만,인터셉터나 필터 등에서 조건 분기 없..

Spring 2025.04.08

Java, 동등성과 동일성 정의 및 활용 예시 (VO 사용 예시)

목차동일성과 동등성 이란두 인스턴스화 된 객체를 서로 같다고 정의하는 기준equals()와 hashCode()의 재정의 이유VO로 알아보는 동일성과 동등성의 중요성VO 사용 예시      두 인스턴스화 객체가 "같다"라는 개념은 "동일성(Identity)"과 "동등성(Equality)"로 나뉜다.  동일성(Identity) 확인 → ==연산자두 객체의 메모리 주소가 같은지 비교같은 인스턴스를 가리키고 있는지 확인완전히 같은 객체인지 체크하는 용도(ex. 싱글톤, 캐시된 객체) 동등성(Equality) 확인 → equals() 메서드 재정의두 객체의 내용(값)이 같은지 비교equals()를 오버라이딩하여 원하는 기준을 정의해야 함VO(Value Object)에서 중요 → 같은 값을 가지면 같은 객체로 인식..

Java 2025.04.02

Java, Immutable 불변 객체란?

immutable 불변 객체 객체 생성 이후 내부 상태가 변하지 않는, 변경할 수 없는 객체 대표적으로 Java의 String, Integer, Long, Double 이 있다. 사용하는 이유동시성 문제 해결멀티스레드 환경에서 가변 객체를 공유하면 예상치 못한 동작이 발생할 수 있다. 하지만 불변 객체는 상태가 변하지 않기 때문에 여러 스레드에서 안전하게 공유할 수 있다. 안정성과 예측 가능성 증가불변 객체는 생성된 후 값이 변하지 않으므로 한 번 설정된 상태를 유지할 수 있다. 이 덕분에 프로그램의 흐름을 더 쉽게 예측할 수 있다. 참조 투명성 유지불변객체는 항상 같은 입력에 대해 같은 출력을 보장한다. 즉, 순수 함수에 적합하므로 함수형 프로그래밍에서도 많이 사용된다. 불필요한 방어적 복사 제거가변 ..

Java 2025.04.02

Spring, DTO, DAO, BO, VO 차이점

Spring에서 Data를 전달하는 객체에는 대표적으로 DTO, VO가 있다, DTO와 VO는 용도가 전혀 다르다.  DTOData Transfer Object로 계층간 데이터를 전달하기 위한 객체이다.계층 사이에서 데이터를 전달하기 위해 DTO에 데이터를 담아 서로 주고 받는다.DTO는 순수하게 데이터 전달만을 위한 객체이다.순수한 데이터 객체로 비즈니스로직을 갖지 않는다.오직 getter/setter 메서드만 갖는다 Controller에서 Service로 데이터를 전달할 때,여러개의 데이터를 하나의 DTO로 묶어 전달하면 유지보수도 쉽고 코드 가독성과 재사용성이 증가한다. VOValue Object로 값 그 자체를 표현하는 객체이다.VO는 객체의 참조값이 다르더라도 값이 같다면 동일한 것으로 봐야한다..

Spring 2025.04.01

정보처리기사, 실기 요약 정리 (6. 기타 용어)

웹 관련 용어Hypertext : 다른 문서/그림으로 이동할 수 있는 연결을 가지고 있는 텍스트HTML : 하이퍼텍스트 및 웹 페이지를 만들 수 있는 마크업 언어URL : 인터넷 상에서 특정 웹 페이지의 위치를 나타내는데 사용되는 문자열MIME : 이메일에서 텍스트 외 이미지/비디오/오디오 등 여러 유형의 파일을 전송 가능   웹 서비스★ SOAPXML기반 메시지를 다른 컴퓨터 네트워크 상에서 교환WSDL웹 서비스에서 제동하는 서비스에 대한 정보를 XML 기반으로 기술UDDI전역 비지니스 레파지토리 / 웹 서비스 관련 정보 공개 및 탐색   인터페이스 구현 기술XMLHTML 문법의 비호환성과 SGML의 복잡성 해결하기 위해 개발AJAXJavascript, XML을 이용한 비동기식으로 웹 페이지의 일부 콘..

정보처리기사 2025.03.26

정보처리기사, 실기 요약 정리 (5. 정보보안)

정보 보안 3대 요소기밀성 : 인가된 사용자만 접근 가능무결성 : 인가된 사용자만 정보 수정 가능가용성 : 인가된 사용자는 권한 범위 내에서 언제든 자원 접근 가능              인증(사용자 신분 환인) / 부인방지(부인할 수 없도록 송/수신 증거 제공)   AAA(Triple-A)인증(Authentication) : 신원 확인권한 부여(Authorization) : 접근 권한 확인계정 관리(Accounting) : 자원 사용에 대한 정보 수집(과금, 감사, 보고서)   양방향 암호화 방식 대칭키 / 비밀키 / 개인키비대칭키 / 공개키특징동일한 키로 데이터를 암호화/복호화암호화키는 DB 사용자에게 공개복호화 키는 비밀키로 관리자만즉, 암호화 키와 복호화 키가 다르다는 얘기블록 (Block)2 b..

정보처리기사 2025.03.26

정보처리기사, 실기 요약 정리 (4. 네트워크)

정보 전송 방식 단방향 : 한쪽 방향으로만 전송 가능 (TV, 라디오)반이중 : 한쪽에서 송신하면 다른 쪽에서는 수신만 가능 (무전기)전이중 : 동시에 송/수신 가능 (전화기)스타형/성형중앙 집중형중앙 노드와 1:1버스형한 개의 회선에 여러 단말 장치 연결기밀성 낮고 통신 회선의 제한이 있음링/루프원/환형단말 장치 추가/제거, 기밀보호 어려움트리/계층 분산형확장이 많으면 트래픽(통신량)이 과정됨망/매쉬그물/완전형단말 장치 추가/제거 어려움   동기 / 비동기 전송구분동기식비동기식전송 단위데이터 블록 단위문자 단위동기 제어 방식클럭 동기Start bit, Stop bit통신 속도고속저속회로 복잡도복잡단순휴지 기간블록 간 휴지 기간 없음→ 높은 전송 효율문자 간 휴지 기간 존재→ 낮은 전송 효율예시데이터 통..

정보처리기사 2025.03.26

암호화, 오류 Error attempting to apply AttributeConverter

오류 발생Caused by: jakarta.persistence.PersistenceException: Error attempting to apply AttributeConverter [ 전체 목록 조회 ]사용자 비밀번호를 양방향 암호화로 저장하고 저장된 모든 데이터를 출력하려고 할 때,발생한 오류이다.의미JPA에서 엔티티의 속성을 데이터베이스로 변환할 때 AttributeConverter에서 문제가 발생이 오류는 주로 엔티티 속성에 대한 변환기(@Convert)가 제대로 작동하지 않을 때 발생한다. 문제 원인 잘못된 키 사용 (Bad Key)암호화와 복호화는 같은 키를 사용해야 한다. 만약 암호화할 때 사용한 키와 복호화할 때 사용한 키가 다르면 패딩 오류가 발생할 수 있다.secretKey 값이 암호..

Java 2025.03.25

암호화, AES-256-CBC를 이용해서 암호화/복호화 하는 방법

AES-256-CBC양방향/대칭 키 암호화 방식암호화 및 복호화에 사용되는 키 값이 동일데이터를 256비트 키와 CBC 모드(Cipher Block Chaining)로 암호화AES는 Advanced Encryption Standard 의 약자로, AES-256은 256 비트 키를 사용하는 AES 알고리즘고속의 대칭키 블록 암호화 알고리즘CBC가장 일반적으로 사용되는 작동 모드 블록을 그대로 암호화하지 않고 이전에 암호화했던 블록과 XOR 연산을 수행하는데,첫 번째 블록은 이전에 암호화한 블럭이 없기 때문에 IV를 이용 동작 원리1. 초기화 벡터(IV, Initialization Vector)CBC 모드는 IV라는 추가적인 값을 필요로 한다.암호화 과정의 첫 번째 블록에만 사용되고, 그 후에는 암호화된 이..

Java 2025.03.24

암호화, 양방향 vs 단방향 암호화

암호화 종류양방향 (암호화 + 복호화)대칭키 (비공개키)비대칭키 (공개키)암호화 및 복호화 예시평문: "안녕하세요"암호화: "97aef2af4b16b80f546c8bff375b7a556d29c0ea44592e837a663651d48123bf"복호화: "안녕하세요"  단방향 (암호화)해시 SHA-256 해시 해시를 사용한 비밀번호 저장 시 보안 강화 방법해시만으로는 보안에 취약할 수 있다 때문에 해시를 강화할 수 있는 방법이 추가적으로 필요하다.1. Salt(소금) 추가해시 값을 생성할 때 랜덤한 문자열을 추가하는 방법같은 비밀번호도 매번 다른 Salt 값이 추가해 해시 값을 다르게 생성할 수 있다.password123 + randomSalt -> 해시화 -> 해시값 * 여기서 Salt 값과 비밀번호는 $..

Java 2025.03.24
728x90