SQL Injection
·
Database
SQL Injection은 웹 사이트의 보안상 허점을 이용해, sql쿼리 문을 이용해서 디비의 정보를 가져오는 해킹기법입니다. 대부분의 클라이언트가 입력한 데이터를 필터링 하지 못할 경우 발생합니다. 인젝션의 대표적인 공격 방법은 다음과 같습니다. * 논리적 에러를 이용한 SQL 인젝션 - select * from member where name='abcde' password='12345' --> select * form client where name='abcde' and password='1342' or '1' = '1' 앞 값과 뒤 값중 하나라도 참이면 참이 되므로 이 구문은 로그인에 성공하게 됩니다. 이를 예방하기 위한 방법들은 다음과 같습니다. 1. 입력값 검증 입력값을 검사하여 SQLI를 예방..
SOLID 원칙
·
Language/Java
다음은 객체지향적으로 설계할 때 참고해야 할 5대 원칙입니다. 1. 단일 책임 원칙 (SRP) 모든 클래스는 각각 하나의 책임만 져야 합니다. 클래스는 그 책임을 완전히 캡슐화해야함을 의미합니다. ex ) 특정한 기능을 수행할 목적으로 있는 클래스가 있다면 해당 기능만을 책임져야하고 이를 수정한다고 한다면 그 이유는 해당 기능과 관련되어서만 수정되어야 함 2. 개방-폐쇄 원칙(OCP) - 확장에는 열려있고 수정에는 닫혀있어야 합니다. 기존 코드를 변경하지 않으면서 기능을 추가할 수 있도록 해야합니다. ex ) 캐릭터의 수정은 필요 없고 움직임의 패턴만 재정의하면 됩니다. 3. 리스코프 치환 법칙(LSP) - 자식 클래스는 언제든 부모 클래스를 대체할 수 있어야 한다는 원칙입니다. 4. 인터페이스 분리 원..
프로세스 주소공간
·
CS/Operating Systems
프로세스의 주소공간은 총 3가지로 나뉩니다. 코드 영역 프로그램의 코드가 저장되는 곳으로, 읽기만 가능합니다. 데이터 영역 전역 변수 같은 데이터가 저장되는 곳으로, 읽고 쓰기가 가능합니다. 스택 영역 함수나 지역 변수가 저장되는 곳으로 읽고 쓰기가 가능합니다. 주소 공간을 나눈 이유는 최대한 데이터를 공유하며 메모리 사용량을 줄여야하기 때문입니다. stack과 데이터를 나눈 이유는 스택 구조의 특성과 전역 변수의 활용성을 위함입니다.
접근 제어자의 종류
·
Language/Java
접근 제어자는 멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 수행합니다. 접근제어자는 생략이 가능하며 생략했을 때는 자동으로 default임을 뜻하게 됩니다. 따라서 default일 경우 접근 제어자를 지정하지 않습니다. 제어자 같은 클래스 같은 패키지 자손 클래스 전체 public O O O O protected O O O default O O private O private - 같은 클래스 내에서만 접근이 가능합니다. default - 같은 패키지 내에서만 접근이 가능합니다. protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능합니다. public - 접근 제한이 전혀 없습니다. 이러한 접근 제어자를 사용하는..
프로세스와 스레드
·
CS/Operating Systems
먼저 프로그램과 프로세스의 차이부터 설명해보자면, 프로그램은 저장장치에 저장되어 있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라온 동적인 상태입니다. 우선 운영체제는 프로그램을 메모리의 적당한 위치로 가져오고, 동시에 작업 지시서를 만드는데 이를 PCB(프로세스 제어블록)이라고 합니다. 이 프로세스 제어블록에는 프로세스를 처리할때 필요한 다양한 정보가 들어있습니다. 이 프로세스 제어블록이 없다면 프로그램이 프로세스로 전환되지 못합니다. 즉 프로그램이 프로세스가 된다는 것은 운영체제로부터 프로세스 제어블록을 얻는다는 뜻이고, 프로세스가 종료된다는 것은 해당 프로세스 제어 블록이 폐기된다는 뜻입니다. 프로세스 = 프로그램 + 프로세스 제어 블록 프로그램 = 프로세스 - 프로세스 제어블록 * 프로..
운영체제
·
CS/Operating Systems
운영체제는 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어입니다. 운영체제의 역할과 목표 1. 자원관리 : 우리는 컴퓨터로 음악을 듣고, 문서를 작성하고, 인터넷을 둘러보지요. 이때 키보드, 네트워크 카드, 사운드 카드등의 컴퓨터 자원을 사용하는데, 운영체제는 이러한 자원을 응용프로그램에 나누어 주어 사용자가 원활하게 작업할 수 있도록 돕습니다. [효율성 - 같은 자원을 관리해도 적은 자원으로 효율적으로 관리해야한다] 2. 자원보호 : 악의적인 사용자나 미숙한 사용자로부터 자원을 보호합니다. 예컨대 어떤 응용 프로그램이 남의 영역을 침범한다면 다른 사람의 데이터를 지울 수도 있기 때문이지요. [ 안정성 - 운영체제가 불안하면 그 피해가 사용자에게 전달되기..
static
·
Language/Java
JAVA 에서 static키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될때 해제되는 것을 의미합니다. 이를 정확히 이해하기 위해 메모리 영역에 대한 이해가 필요합니다. 일반적으로 프로그래머가 만든 class는 static영역에 생성되고, new 연산을 통해 생성된 객체는 heap영역에 생성됩니다. 객체의 생성시에 할당된 heap영역의 메모리는 GC를 통해 수시로 관리를 받는 반면, staic키워드를 통해 static영역에 할당된 메모리는 GC의 관리를 받지 않습니다. 모든 객체가 공유하는 메모리라는 장점을 지니지만, static을 자주 사용하게 된다면 프로그램의 종료시까지 메모리가 할당된채로 남아있기 때문에 사용시 신중한 숙고를 해야합니다. 다음으로 제어자 static에 대해 설명하자면..
CORS란?
·
CS/Computer Network
CORS(Cross-Origin Resource Sharing)는 서로 다른 origin간에 리소스를 전달하는 방식을 제어하는 매커니즘으로, SOP를 위반할시 CORS이슈를 접하게 됩니다. 여기서 SOP(Same Origin Policy,동일 출처 정책)란 자바스크립트 엔진 표준 스펙의 보안 규칙으로 하나의 출처에서 로드된 자원이 호스트나 프로토콜, 포트번호가 일치하지 않는 자원과 상호작용하지 못하도록 요청 발생을 제한하고, 동일 출처에서만 접근이 가능한 정책입니다. CORS 이슈는 요청 브라우저에서 다른 도메인을 가지는 서버로 요청이 갈때 브라우저에서 발생하는 이슈이며, 이를 해결하기 위해서는 여러가지 방법이 있는데 다음과 같습니다. 1. 동일 출처로 이동 -> 같은 도메인, 같은 포트로 이동시키면 해..
클래스와 객체
·
Language/Java
클래스 - 객체를 만들기 위한 설계도 혹은 틀입니다. - 연관되는 변수와 메서드의 집합입니다. - 식상한 비유이지만 붕어빵 틀 객체 - 클래스에 설계한 모양대로 구현된 실체입니다. - 클래스의 타입으로 선언됨 - 소프트웨어 구현 대상 - 현실세계에 가까움 - 붕어빵 여기서 조금 더 상세하게 들어가자면 객체와 인스턴스는 사실 비슷하지만 다른 개념입니다. 인스턴스 - 설계를 바탕으로 소프트웨어 세계에서 구현된 실체 - 객체가 메모리에 할당되어 실제 사용될때 인스턴스라고 불리게 됨 - 소프트웨어에 가까움 - 클래스로부터 객체를 만드는 과정을 '인스턴스화'라고 부름 OOP(Object-Oriented Programming) 객체 지향 프로그래밍이란? 모든 데이터를 객체로 취급하는 프로그래밍을 의미합니다. 객체는..
takoyummy
TakoHub