우아한 테크코스/테크코스
-
[Java] O/R 매핑 프레임워크로 데이터 액세스 레이어 구현우아한 테크코스/테크코스 2020. 2. 23. 17:03
O/R 매핑 프레임워크 O/R 매퍼라고 부르기도 함 종류는 여러가지가 있는데, 대표적인 예로는 마이바티스(MyBatis)가 있음 필요성 데이터 액세스 레이어를 DAO로 분리하면 DB 연결과 관련된 처리를 분리해 전체 코드의 가독성이 좋아짐 하지만, 분리한 것이므로 번거로운 DB 연결 처리가 간단해지는 것은 아님 위의 문제를 해결하고자 시도된 방법 중 하나가 O/R 매핑 프로그램 O/R 매핑 O/R : 객체/관계(Object/Relation) O/R 매핑 : 프로그레밍 언어의 객체와 관계형 DB를 대응 관계형 DB(RDB) : 여러 개의 테이블과 그 관계를 이용해 정보를 관리하는 DB 임피던스 불일치 : 관계형 데이터베이스상의 표현과 객체지향 언어의 객체를 통한 표현의 차이 > RDB : (예) 고객 / ..
-
[Java] JDBC / 데이터 액세스 레이어 / DAO우아한 테크코스/테크코스 2020. 2. 23. 16:17
용어 JDBC : Java DataBase Connectivity; 약칭이 아닌 정식 명칭 API : Application Programming Interface : 운영체제나 프로그래밍 언어가 준비한 라이브러리를 애플리케이션에서 이용하기 위한 입구가 되는 것, Java의 경우 표준으로 준비된 각종 클래스가 API JDBC 자바에서는 DB에 접속하기 위한 API로 JDBC가 준비되어 있음 레이어를 나누지 않았을 때의 순서 1. 데이터 소스 획득 웹 애플리케이션에서는 일반적으로 DB와의 연결을 애플리케이션 서버가 관리 > 웹 애플리케이션이 어떻게 DB에 연결하는지 일일히 신경쓰지 않아도 됨 웹 애플리케이션이 DB에 접근하려면 먼저 JNDI(Java Namming and Directory Interface)..
-
[VIM] Intellij에서 vim쓰기우아한 테크코스/테크코스 2020. 2. 22. 20:56
VIM 한국어 튜토리얼 보기 지난 번에 '호돌'이 알려줬다! Good! 빔 튜토리얼이 있는지는 아예 몰랐고, 한국어로 지원하는 지도 몰랐는데, 생각보다 정말 잘 되어있었다. vimtutor ko Intellij에서 vim쓰기 오늘 '로운'이 알려줬다! Good!! 인텔리제이에서 IdeaVim 플러그인을 설치하기만 하면 된다 :) VIM 한국어 튜토리얼 (필요한 부분) 한국어 튜토리얼에 나와있는 부분 봐야되는 것 복사해 둠! 직접 쳐보는게 좋지만 가끔 헷깔리는걸 그냥 블로그에서 보려는 나태의 결과... :
-
[보안] 폼인증 vs Basic 인증 vs 다이제스트 인증우아한 테크코스/테크코스 2020. 2. 22. 19:01
폼 인증(FORM Autrhentication) HTTP의 폼으로 인증 페이지를 만든 것 폼 인증 단점 프로그램을 만들어야 함 폼 인증 장점 사용자에게 역할을 설정하고 역할에 따라 접속할 수 있는 화면을 제한하는 식의 기능 등을 제공할 수 있음 세션과의 연동이 가능하므로 로그아웃 등의 기능을 구현할 수 있음 Basic 인증(Basic Authentication) 브라우저가 표시하는 대화창 브라우저에 따라 디자인은 다르지만 기능은 같음 HTTP 규격의 일부로 규정되어 있는 가장 단순한 인증 시스템 Base64를 이용해 HTTP 헤더에 넣을 수 있는 형태로 사용자 이름과 패스워드를 변환 (HTTP 헤더에 사용할 수 있는 문자는 한정되어 있기 때문) Base64 : 임의의 정보를 알파벳이나 숫자 등 64가지 ..
-
[보안] 설계/실행의 실수에 기인한 오작동/보안 문제를 막기 위한 대책우아한 테크코스/테크코스 2020. 2. 22. 12:10
뒤로 가기 버튼 오작동 웹 브라우저에는 한 번 표시했던 페이지를 저장해놓는 캐시(Cache) 기능이 있음, 뒤로 가기 버튼을 눌러 바로 전 페이지를 표시할 때는 해당 캐시 기능을 이용하여 웹 서버에 다시 요청을 하지 않아 작동을 빠르게 할 수 있음 단, 위의 경우 정적인 페이지에서는 문제가 되지 않지만, 세션을 이용해 상태를 관리하는 웹 애플리케이션에서는 문제가 될 수 있음(예 - 주문 후 뒤로가기 + 앞으로가기 = 재주문) 뒤로 가기의 경우 웹 애플리케이션 측에서 감지를 할 수 없으므로(웹 서버에 다시 요청을 하지 않기 떄문에), 다양한 오작동의 원인이 됨 대책 1 - 브라우저 캐시 무효화 일단, 위와 같은 경우엔 브라우저가 HTML을 캐시하지 않게 막는 것이 중요 HTTP 응답의 헤더에 아래와 같은 ..
-
[보안] 해시함수와 메시지 다이제스트우아한 테크코스/테크코스 2020. 2. 22. 11:49
해시 함수(Hash Function) 임의의 길이의 입력에 대해 그 입력을 대표하는 메시지 다이제스트(Message Digest)라고 하는 고정 길이의 값을 출력하는 함수 SHA(Secure Hash Algorithm; 해시 암호 알고리즘) 해시 함수에는 다양한 알고리즘이 있음 충돌 위험성이 적은 순으로 대표적인 알고리즘을 정렬하자면 "SHA-256 > SHA-1 > MD5", 따라서 SHA-256 사용이 권장 무한이라고 할 수 있는 입력값을 유한한 출력값(하지만 범위는 넓음)으로 변환하기 떄문에 원리적으로 결과가 충돌할 가능성이 0은 아님, 하지만 한 없이 낮도록 고안된 것 특징 1. 입력 정보가 조금이라도 바뀌면 결과가 크게 달라짐 123456789 > SHA-1 > f7c3bc1d808e05732a..
-
[보안] SSL을 이용한 암호화우아한 테크코스/테크코스 2020. 2. 22. 11:31
SSL이란? TCP/IP상의 통신을 암호화해 제삼자가 도청해도 내용을 알 수 없게 하는 기술 공개키 암호를 이용해 TCP/IP의 패킷을 암호화함 - 엄밀히 말하면 공개키 암호를 이용하는 암호화나 복호화는 시간이 오래 걸리므로, 실제 통신에선 기존의 공통키 암호를 사용하고 그 키의 송신에만 공개키 암호를 사용함 SSL 통신 기능은 웹 서버나 웹 애플리케이션 서버에서 설정하면 자동으로 실행되므로 특별히 의식할 필요는 없음, 대규모 시스템의 경우 SSL 가속기라는 전용 하드웨어를 도입해 암호화 작업을 빠르게 처리하기도 함 HTTP over SSL(https) HTTP를 이용한 통신을 SSL로 암호화한 것 URI의 스킴 : https 스킴(Scheme) : 리소스를 취득하기 위한 방법 HTTP vs HTTPS ..
-
[보안] 웹 애플리케이션에 대한 대표적인 공격 수법 / 대책우아한 테크코스/테크코스 2020. 2. 21. 22:57
SQL 인젝션(SQL Injection) 웹 폼 등의 입력 인터페이스를 이용해 DB에서 발행되는 SQL을 개발자가 의도하지 않은 형태로 변경해 정보를 부정 취득하거나 수정하는 방법 이 공격 수법을 이용하면 부정 로그인뿐 아니라 DB에 대해 임의의 SQL을 싫애해 악의적인 사용자 계정을 만들거나 원래 취득할 수 없는 정보를 화면에 표시하게 할 수 있음(그러자면 DB 테이블 구성을 파악해야 하지만, 공격자는 화면에 표시되는 SQL의 실행 에러를 실마리로 내부 구조를 추측할 수도 있음) 제삼자의 부정 로그인이나 열람 권한이 없는 정보에 대한 접근, DB의 부정 수정 또는 삭제같은 공격을 허용하며, 그 결과 개인정보의 유출/업무 정지/혼란 같은 문제로 발전 무서운 점은 인터넷을 경유해 전 세계 어디에서도 공격할..