[개발 일기] 2025.02.09 - IP보안
·
개발 일기
💡 개요 많은 서비스의 로그인 화면에서 저렇게 ‘IP보안’을 선택할 수 있다. 그런데 저 ‘IP보안’은 뭘 의미할까?   📕 IP 보안IP보안이란, IP 정보를 토대로 사용자의 네트워크 환경에 맞게 보안 수준을 제공하는 기술이다.   🚀 1단계 주로 IP의 대역을 토대로 서비스 사용을 허용할지 결정한다. (=IP 대역 제한)  로그인한 IP가 192.168.1.100 이면, 192.168.1.101 ~ 192.168.1.255 는 허용 가능하지만, 192.168.2.xxx 부터는 차단되는 것이다.  가장 흔히 사용되는 보안 방식이다.   🚀 2단계 2단계는 IP가 변경될 경우 재로그인이 필요한 보안 단계이다.  하지만 반드시 재로그인을 해야 하는 것은 아니고, 변경된 IP가 최근에 로그인할 때 사..
[개발 일기] 2025.02.08 - 함수형 프로그래밍
·
개발 일기
💡 개요오늘은 함수형 프로그래밍에 대해 정리해 보자.   📕 함수형 프로그래밍함수형 프로그래밍이란 데이터를 변경하지 않고, 순수 함수를 사용해 기능을 구현하는 방식을 말한다.  이 방식에서는 하나의 기능을 여러 개의 순수 함수로 나누어 구현할 수 있으며, 이를 통해 코드의 가독성을 높이고 유지보수를 더 쉽게 할 수 있다.  또한 함수형 프로그래밍을 적용한 메서드는 순수함수이기 때문에 메서드 바깥에 있는 변수나 객체를 변경하지 않고 새로운 값을 반환한다. 이를 통해 불변성을 지킬 수 있다.  함수형 프로그래밍의 특징은 크게 ‘순수 함수, 부수 효과, 1급 객체’가 있다.   🚀 순수 함수 & 부수효과 순수 함수는 외부 상태에 의존하지 않으며, 외부 상태를 변경하지 않는 함수를 의미한다.  즉, 함수가..
[개발 일기] 2025.02.07 - CSRF
·
개발 일기
💡 개요오늘은 CSRF에 대해 정리해 보자.   📕 CSRFCSRF(Cross-Site Request Forgery)는 사이트 간 요청 위조 기술로, 사용자가 의도한 요청이 아닌 악의적 요청을 서버에 보내는 것을 의미한다.  🚀 CSRF 과정 1. 사용자가 실제 서비스인 A사이트에 로그인을 성공하면 인증 쿠키나 토큰이 발급된다.2. 이후 해당 사용자가 공격자가 해킹을 위해 만들어놓은, B라는 웹 사이트를 방문할 때, 쿠키는 살아있는 상태이다.3. 이 쿠키 정보를 사용해 B 사이트는 A 사이트에 악의적인 요청을 보낼 수 있다.4. 하지만 A 사이트는 쿠키에 사용자의 인증 정보가 들어있기 때문에 정상적인 요청으로 처리한다.5. 결국 공격자가 원하는 대로 결제를 요청하거나, 정보를 삭제하는 등의 작업을 ..
[개발 일기] 2025.02.06 - 초기화하다?
·
개발 일기
💡 개요오늘은 객체를 생성할 때, 가장 처음으로 하는 작업인 초기화가 도대체 뭘 의미하는지에 대해 정리해 볼 것이다.   📕 초기화  초기화의 사전적 의미는 ‘처음 상태로 되돌림’ 이다.  하지만 자바의 초기화 의미는 조금 다르다.  자바의 초기화는 ‘변수에 처음으로 값을 할당한다’라는 의미이다.  이러한 초기화 과정을 통해 변수에 예상치 못한 값이 할당되는 것을 방지할 수 있다.  그런데 자바에서는 변수의 선언 형태에 따라 초기화를 반드시 해야 하는 경우와 그렇지 않은 경우가 있다.   🚀 변수 초기화지역 변수 지역 변수는 메서드 내부에서 선언된 변수를 의미한다.  아래 코드는 VariableInit.main() 메서드 내부에서 선언된 지역 변수를 나타낸 것이다. public class Varia..
[개발 일기] 2025.02.05 - 식별 관계, 비식별 관계
·
개발 일기
🤔 개요오늘은 데이터베이스에서 외래 키 설정에 사용되는 식별 관계와 비식별 관계에 대해 정리해 보자.   💡 식별 관계 식별 관계란, 부모 테이블의 기본 키가 자식 테이블의 기본 키에 포함되는 것을 말한다.  이러한 식별 관계가 성립된 테이블에선 자식 테이블의 레코드는 부모 테이블의 레코드 없이는 존재할 수 없다.  이로 인해 부모 테이블과 자식 테이블 간의 강한 종속 관계가 성립된다.  다음은 제품과 주문의 관계를 식별 관계로 나타낸 예시이다.  보통 쿠팡이나 네이버 쇼핑에서 어떠한 주문을 하기 위해선 반드시 그 제품이 존재해야 한다.  그렇기 때문에 주문 테이블 입장에선 제품 테이블의 레코드가 반드시 존재해야 한다.  이러한 식별 관계를 데이터베이스에 구현하는 경우, 장・단점이 명확하다.   👍..
[개발 일기] 2025.02.04 - 추상 클래스 vs 인터페이스
·
개발 일기
개요 오늘은 자바에서 자주 사용되는 추상 클래스와 인터페이스의 특징과 차이에 대해 정리해 보자.   추상 클래스 자바에서 추상 클래스란 하나 이상의 추상 메서드를 가지고 있는 클래스를 의미한다.  추상 메서드란, 구현부가 작성되지 않은 메서드를 의미한다. 이 메서드를 사용하기 위해선 해당 추상 클래스를 상속받는 하위 클래스에서 반드시 재정의해야 한다.  추상 클래스와 추상 메서드는 코드 상에 abstact라는 키워드를 명시해야 한다.  아래의 클래스는 Animal이라는 추상 클래스가 있고, 클래스 내부엔 makeSound()라는 추상 메서드가 있다. abstract class Animal { String name; int age; abstract void makeSound();}c..