[네트워크 보안] 모바일 Application 패킷 스니핑 방법 정리(앱에서 호출하는 네트워크 요청 탐지, Nox App Player, MITM Proxy)
·
Study/Computer Science
- 패킷 스니핑(Packet Sniffing)이란, 특정 네트워크를 통해 전송되는 데이터 패킷을 가로체어 분석하는 기술입니다.좋은 용도로는, 악의적인 프로그램의 네트워크 요청을 파악하여 대처할 수 있는 보안 기법으로 사용되지만, 해당 네트워크 내의 모든 네트워크 활동을 파악할 수 있으므로 비밀번호, 인증/인가 토큰, 중요 정보 탈취에 사용될 수도 있습니다. 이번 포스팅에서는 안드로이드 앱에서 나오는 모든 네트워크 요청을 확인하는 방법을 알아보겠습니다.이를 통하여 앱 개발자의 입장, 앱과 네트워크 통신을 하는 RestAPI 백엔드 서버 개발자의 입장에서 무엇을 조심해야 하는지를 알 수 있을 것입니다.- 패킷 스니핑은 여러 방식이 존재합니다. 네트워크 구조에 따라 패킷을 가로챌수만 있다면 패킷 스니핑이라 부..
[정보 처리] 18. GoF 디자인 패턴 총정리 (Java 예시 코드 수록)
·
Study/Computer Science
[디자인 패턴 개념]- GoF 란, 1994 년 출간된 "Design Patterns: Elements of Reusable Object-Oriented Software" (디자인 패턴을 최초로 제안한 책)의 공동 저자인 Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 의 네 사람을 지칭하는 말입니다.- 디자인 패턴은, 반복적인 문제들을 해결하기 위한 설계 패턴 중 효율적이고 모범적인 패턴을 일반화 한 것입니다.디자인 패턴의 GoF 가 처음 제안한 것이며, GoF 가 제안한 디자인 패턴을 GoF 패턴이라 부르지만,이외에도 다양한 디자인 패턴(MVC, MVVM, BLOC, MVP, Thread Pool, etc...)들이 존재합니다.본 게시글에서는 Go..
[정보 처리] 17. 데이터 전환(ETL), 프로그래밍 이론
·
Study/Computer Science
- 이번 포스팅에선 기존에 데이터베이스에 존재하는 중요하고 막대한 데이터를 이관하거나 변환 할 때에 어떤식으로 처리를 해야하는지에 대한 지식을 정리할 것입니다. - 또한 정보처리의 범위내에서 이론적인 프로그래밍 개념에 대해 설명드리겠습니다. 미리 말씀드리지만, 정보처리 시리즈에서는 실용적 프로그래밍 개발 방법이나 코딩 방식에 대해서 다루지 않을 것입니다.프로그래밍 범위는 따로 두꺼운 책이 있을 정도로 범위가 넓으며, 실용에 해당하는 부분이므로 정식으로 배우시거나 독학하시는 것을 추천드리기 때문입니다.(추후 이 부분을 제 블로그에서 정리할 가능성도 있지만, 책, 유튜브, 다른 분들의 블로그에 이미 굉장히 잘 정리된 자료를 쉽게 찾으실 수 있을 것입니다.) 본 게시글에서 다루는 것은, 이론만 다루는 분들을 ..
[정보 처리] 16. 물리 데이터베이스 설계
·
Study/Computer Science
- 이번 포스팅에선,데이터베이스를 물리적으로 구성하기 위한 설계 방식과,물리적 데이터베이스 구조와 원리를 이해함에 따라 데이터베이스 시스템의 성능을 효율적으로 높이는 방식에 대해 알아보겠습니다. [시스템 분석](시스템 자원 체계 파악)- 시스템 자원이란, 데이터베이스 설치 및 운용에 영향을 끼치는 물리적 요소들을 뜻합니다.관념적인 데이터베이스를 개발자가 다루는 것도 중요하지만, 실제로 이러한 시스템이 실행되는 환경은 무척 중요합니다.데이터 저장 공간이 100MB 도 안되는 환경에서 DBMS 가 동작중이라면 운영 자체가 불가능할 것이기 때문이며, 필요 이상의 환경 역시 불필요한 비용을 초래할 수 있습니다. - 시스템 자원 종류1. 하드웨어 자원 : DBMS 가 실행되는 하드웨어의 CPU, 메모리, 디스크,..
[정보 처리] 15. DBMS 활용 (SQL, 인덱스, 뷰, 트랜젝션, 병렬 처리, DB Lock)
·
Study/Computer Science
- 이번 포스팅에서는 DBMS 를 조작하고 활용하는 방식에 대해 정리할 것입니다.대부분의 내용이 DBMS 에 명령을 내리는 SQL 에 해당하는 것으로,SQL 을 다뤄본 적이 없으신 분이라면 MySQL, MariaDB 등의 DBMS 중 하나를 컴퓨터에 설치하고, Workbench, DBeaver 등의 DBMS 사용툴을 설치하여 실제로 SQL 을 DB 에 명령내려보는 방식으로 진행하는 것을 추천드립니다. - 개발 실무에서는 SQL 을 잘 사용하는 것이 중요합니다.자주 사용하게 될 DBA, 백엔드 개발자 뿐 아니라 모든 분야의 개발자들이 필수적으로 숙지해야하는 스킬이며,SQL 을 어떻게 사용하는지에 따라서 구현한 기능의 성능이 크게 차이가 날 수도 있으므로, 기본과 원리를 잘 이해한 상태에서 SQL 을 최적화..
[정보 처리] 14. 데이터베이스 기본, 설계, 정규화
·
Study/Computer Science
- 이번 포스팅에서는 데이터베이스의 기본 개념에서부터 시작하여 정규화까지를 정리하겠습니다.특히나 데이터베이스 정규화의 경우는 개발 경력자라고 할지라도 정확한 내용을 모르시거나 등한시 하는 경우가 많습니다.무조건적으로 정규화를 해야한다는 것에 있어서는 현실적으로 맞지 않는다는 것이 중론이지만,되도록 정규화를 하는 방향으로 진행했다가 상황에 따라 제약을 푸는 방식이 이치에 맞는 편입니다.저와 같이 가끔 잊어버려서 실무에서 헷갈린다고 생각하시는 분이시라면 한번쯤 훝고 지나가시는 것을 추천드리는 바입니다. [데이터베이스 관리 시스템(Database Management System, DBMS) 설명](데이터베이스 시스템)- 데이터베이스란, 데이터의 체계적인 집합입니다.그저 데이터가 모여있는 것이 아닌 어떠한 목..
[정보 처리] 13. 소프트웨어 성능 분석, 품질 평가
·
Study/Computer Science
[소프트웨어 성능 분석]- 소프트웨어의 성능은 사용자가 요구하는 기능을 수행하기 위하여 최소한의 자원을 사용하면서 최대한 빠르고 정확하고 많은 작업을 처리할 수록 좋은 것입니다. - 소프트웨어 성능 측정 지표는 아래와 같습니다.1. 처리량(Throughput) : 주어진 시간에 처리할 수 있는 단위 작업(트랜젝션)의 수2. 응답 시간(Response Time) : 사용자 입력에 대한 응답이 나타날 때까지의 시간3. 경과 시간(Turnaround Time) : 사용자 입력에 대한 결과 출력이 완료될 때까지의 시간4. 자원 사용률(Resource Usage) : 작업 처리를 위해 사용한 CPU, 메모리, 네트워크 등의 사용량 - 소프트웨어 성능 분석 도구 유형1. 성능(Performance)/부하(Load)..
[정보 처리] 12. 소프트웨어 테스트
·
Study/Computer Science
(소프트웨어 테스트 설명)- 테스트란, 사용자가 요구하는 기능, 성능, 사용성, 안정성 등의 기준을 만족하는지를 검증하는 활동입니다.소프트웨어 내부에 숨어있는 결함을 찾아내 이에 적절한 결정을 내리는 것이 최종 목적입니다. - 소프트웨어 결함 법칙1. 결함 집중(Defect Clustering) : 결함의 대부분의 특정 모듈에 집중되어 있는 경향이 있습니다.2. 낚시 법칙 : 물고기가 잘 잡히는 낚시 포인트가 존재하는 것처럼 특정 위치에서 많은 결함이 발생합니다.3. 파레토(Pareto) 법칙 : 결함의 80% 는 20% 의 기능에서 집중적으로 발생합니다.4. 살충제 패러독스(Pesticide Paradox) : 동일 테스트 케이스로 반복 실행을 하면 새로운 결함을 발견할 수 없습니다.5. 오류-부재의 ..
[정보 처리] 11. 제품 소프트웨어 패키징
·
Study/Computer Science
- 이번 포스팅에선 소프트웨어 공학 분야에서 팔기 위해 만들어진 제품 소프트웨어를 포장(패키징)하는 방법을 학문적으로 정리할 것입니다. - 제품 소프트웨어 패키징이란,개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 포장하는 작업입니다.설치에서부터 사용까지 필요한 모든 사항 및 매뉴얼이 포함되어 있어야 하며,일단 배포된 소프트웨어에 대한 패치 및 업그레이드를 위한 버전 관리가 가능해야 합니다. - 제품 소프트웨어 패키징 필요사항1. 사용자 편의성을 중심으로 구성2. 범용적 환경에서 사용이 가능하도록 고려3. 버전 관리 등 지속적 관리를 고려 (소프트웨어 빌드)- 소프트웨어 빌드란, 개발자가 작성하는 인간 중심의 코드를 실제 컴퓨터가 실행 가능하도록 해석하는 것입니다. - 소프트웨어 빌드 및 ..
[정보 처리] 10. 시스템 통합 구현
·
Study/Computer Science
- 시스템을 통합한다는 것은, 별개로 만들어진 시스템을 서로 연결하여 하나의 시스템처럼 사용하는 것을 의미합니다.최초에 단일 시스템을 하나 구현한 시점이나 스스로 운영하지 않는 SW 를 개발하는 경우에는 신경쓰지 않아되 되지만,기존 시스템을 기반으로 하여 새로운 서비스를 창출한다면 시스템 모듈간 연계를 신경써야하며, 시스템간 통합을 구현해야 합니다.(시스템 통합은 기업 내부의 시스템간 통합일 수도 있고, 외부 기업이 제공해주는 시스템과의 연계일 수도 있습니다.) - 시스템 통합은 아키텍쳐, 송수신 방식에 따라 다양한 방식이 있습니다.통합 구현의 요소는 아래와 같이 구성됩니다. 1. 송신 시스템 : 전송하고자 하는 데이터를 생성하는 시스템2. 중계 시스템 : 내부 시스템과 외부 시스템간 연계시에 적용되는 ..