Internet Protocols and Service Denial 우선, 이 장에선 인터넷 프로토콜을 위협하는 공격을 알아보자. DDos/Dos 공격 공격자가 사용자의 IP address나 도메인을 훔쳐 spam 을 보내 내ip나 domain이 블랙리스트에 등록되게 한다. 공격자가 나에게 엄청난 traffic을 발생시켜 내 서비스를 불가능하게 하는 공격 이때, 감염된 컴퓨터를 통해 트래픽을 내 ip주소에 보내는데 이를 botnet이라고 한다. Botnet : Command & Control인 중앙집중형에서 벗어나 모든 좀비들이 C&C가 될 수 있는 분산형 방식으로 진화중 BGP 공격 BGP란? Border Gateway Protocol의 약자로, Router가 따라야하는 프로토콜을 의미한다. 여러 AS..
정보보안_7_Authorization
·
CS/정보보안
이번장에선 Access control의 두번째 파트, 인가에 대해 다루겠다. Authorization 인가란? 사용자, 시스템이 어떤 동작을 할 수 있게 권한을 부여하는 것. 특정 리소스에 접근권한을 부여하는 것을 의미한다. 특히 요즘은 카카오, 네이버등 소셜 계정으로 로그인을 하는 경우가 많다. 이때 카카오, 네이버는 클라이언트 App에게 사용자의 정보에 관한 접근 권한을 부여해야한다. 따라서 이를 위한 프로토콜이 필요한데, 대표적인 예가 OAuth 2.0이다. OAuth 2.0 인증/인가와 관련된 framework로 외부에서 다른 서비스에 제한된 접근을 가능하게 한다. RFC 6749에 명세를 따라, access tokens을 어떻게 발행할지에 관한 프로토콜이다. 이를 통해 제3자가 서버의 특정 리소..
Week9
·
BE/23-1-GDSC - OC-BE
이번장은 자바 문법에 관한 이야기다. 1. 람다와 스트림 람다란? 람다(lambda)란 이름이 없는, 즉 익명을 의미한다. 따라서 람다함수란 익명함수를 의미하는데 말그대로 익명함수이기에 함수의 이름이 없이 괄호와 매개변수, 화살표(->)만으로 함수를 작성할 수 있다. 다음과 같이 말이다. (x) -> x+1 이렇게 코드를 작성하면 코드가 간결해진다는점, 개발자의 의도가 명확히 드러난다는 점, 함수를 선언과 동시에 사용할 수 있어 생산성이 높아진다는점, 병렬처리의 가능하다는 장점이 있다. 이러한 이유로 java8에서부터 람다 함수를 지원한다. 하지만, 장점만 존재하는 것은 아니다. 람다를 사용하면, 다음과 같은 단점이 존재하기에 주의해서 사용해야한다. 첫째, 함수 이름이 없기 때문에 반복된 작업을 간결히 ..
Week8
·
BE/23-1-GDSC - OC-BE
1. IoC와 프레임워크, 라이브러리 IoC란? Inversion of Control의 약자로 제어에 관해 역전이 일어났다는 것을 의미한다. 그러면 여기서 Control은 무엇을 제어하는 것을 의미할까? 우리는 개발자니까, 프로그래밍적으로 생각해보면 당연히 코드, 프로그램에 관한 제어이다. 개발자는 자신이 작성한 코드에 대해 자신이 원하는대로 흘러가길 바란다. 이렇게 작성해서 이러한 흐름으로 코드가, 프로그램이 진행되어야지~ 하는 개발자의 흐름대로 코드가 작성되고 흘러가는 것이 일반적이고 이러한 경우를 프로그래머가 제어권을 가지고 있다고 한다. 이러한 제어의 흐름을 조금 더 세분화해서, 객체지향 프로그래밍에서 '제어'란, 객체들간의 의존성을 연결하고 객체의 생성을 담당하는 것을 의미한다. 즉, 지금까지 ..
Week7
·
BE/23-1-GDSC - OC-BE
SOLID란 좋은 객체지향 설계를 위한 5가지 원칙을 의미한다. 지금부터 그 5가지에 대해 알아보도록하자. SRP (Single Responsible Principle) : 단일 책임 원칙 한 클래스는 단 하나의 기능,책임만을 가지고 있어야한다는 원칙이다. 한 클래스의 책임 영역을 확실하게 해야한다느 의미이다. 그렇다면 책임의 범위가 무엇일까? 이는 상황에 따라 다르지만 변경을 기준으로 한다. 한 클래스의 기능을 변경하거나 코드를 수정할때, 이에 따른 다른 클래스의 파급효과가 적을수록 srp를 잘 따르고 있는 것이다. OCP (Open / Close Principle) : 개방 - 폐쇄 원칙 소프트웨어는 확장에는 열려있어야하나 변경에는 닫혀있어야한다. 즉, 새로운 기능을 추가하는 것과 같은 확장이 일어나..