정규화 Normalization정규화는 통계학에서 여러가지의 의미를 가지고 있으며 주로 서로 다른 척도를 가진 것들에 대해서 공통의 척도를 갖도록 조정 하는 것으로 사용 된다. 보통 평균화 이전에 사용하며 교육 평가 점수를 정규화 하는 경우 분포를 정규분포로 맞추기 위해서 사용을 한다.날짜주식 A 주식 B2010-01-0110,00010,0002011-01-019,00050,0002012-01-0111,000100,0002013-01-0115,000150,000주식 A 종목과 주식 B 종목의 데이터 셋을 가지고 있다고 가정해보자. 각 주식 종목들의 범위는 [9000~15000], [10000~150000] 을 알 수 있다. 주식 A 종목에 비해서 주식 B 종목의 범위가 휠씬 넓다. 따라서 두개의 주식 종..
https://webhacking.kr/challenge/bonus-4/ view-source 방법 extract 함수로 변수 추출을 하는데 SERVER와 COOKIE를 변수로 추출한다. 여기서 서버는 헤더 정보, 쿠키는 쿠키 정보를 가지고 있는데 쿠키에 REMOTE_ADDR 키를 가진 값을 생성한다. 그리고 나서 string replace를 함수들을 통과 했을 때 127.0.0.1 이 나오도록 쿠키 값을 수정해준다. 정답 값은 "112277...007.....007.....1"
Cookie Bomb Attack Cookie Bomb는 비정상적인 크기의 쿠기 값으로 생성하여 공격하는 방법. 일반적인 HTTP Request 프로토콜에서는 Request/Respons로 나누어지고 각각 Header/Body로 나누어진다. 그 중에 Request Header가 너무 클 경우 413(Request Entity Too Large) 혹은 400(Bad Request) 에러를 발생 시킨다. 공격을 해소하기 위해서는 Client 쿠키가 초기화 하지 않는 이상 계속 이어진다. 많이 사용 되는 Web Server의 Header 허용 사이즈 Web Server Size Nginx 4KB ~ 8 KB Apache Web Server 8KB Tomcat 8KB ~ 48KB 공격 방법 XSS나 유저 트래킹..
https://webhacking.kr/challenge/web-11/ view-source 소스 코드를 보면 $_GET['id']로 url query id 값을 가져와서 preg_match 확인 후 admin 글자가 있다면 exit 하도록 되어 있다. 그 다음줄에서 urldecode를 진행 하니 ASCII 코드표를 확인 후 URL Encoding을 한다. 한번만 인코딩 하면 접속시 'admin'으로 변경 되니 두번 인코딩 하여 ?id=%2561%2564%256d%2569%256e으로 접속
[보안] HTML Image 태그 주의할 점 - 2 route 및 controller 작성 path("something.png", SomethingView.as_view()) class SomethingView(View): def get(self, request, *args, **kwargs): print(request.headers) print(request.GET) return HttpResponse(status=204) HTML Image 작성 해당 이미지가 출력되는 곳에서 local storage에 xxx 키값으로 저장되어 있는 값을 가져오고자 한다. 결과 만약 local storage, cookie 등의 비휘발성의 데이터가 사용자 Client에 저장되어 있고 특정 키 값을 추적하여 확인한다면 서..
[보안] HTML Image 태그 주의할 점 회사를 다니며 상용 서비스를 운용과 개발을 해왔는데, 그 길지도 않은 기간동안 악의적인 목적으로 혹은 학습 목적으로 보이는 경우의 운용중인 서버를 바라보는 공격적인 행위가 있었다. 그 때의 추억을 되새기며 몇가지 간단한 것들에 대해서 한번 정리 해볼려고 한다. 이미지 파일에 스크립트를 삽입하는 방법 샘플 예시 https://www.secjuice.com/hiding-javascript-in-png-csp-bypass/ How To Bypass CSP By Hiding JavaScript In A PNG Image Hide a malicious JavaScript library in a PNG image and tweet it, then include it in..
[Kubernetes] Mac M1에서 OpenLens 설치 OpenLens 설치 brew install --cask openlens (https://github.com/MuhammedKalkan/OpenLens) Extension 설치 플러그인 설치 @alebcay/openlens-node-pod-menu 설치가 되면 종료 후 Reload
API, 서비스, 도메인 테스트 및 TDD 에서의 기어비 테스트 필요 이유 테스트가 있으면 시스템 변경에 두려움이 적어진다. 하지만, 너무 많은 테스트는 코드 변경마다 테스트 코드도 같이 변경되어야 하는 문제가 있다. 테스트의 목적은 코드 변경에서 시스템의 특성을 강제로 유지하기 위해서다. API 테스트를 작성하면 도메인 모델을 변경할 때 테스트 코드 변경의 양을 줄일 수 있다. 테스트 종류에 따른 얻는 것 구분 API 테스트 서비스 테스트 도메인(모델) 테스트 피드백 적음 - 많음 변경 장벽 낮음 - 높음 테스트 영역 넓음 - 한정 도메인(모델) 테스트 코드와 더 밀접하게 연관되어 작업시 높은 피드백을 받을 수 있다. 테스트 코드를 통해서 도메인에 대한 이해도를 높일 수 있다. API 테스트 더 높은 ..
알림 서비스 설계 우리는 왜 알림 서비스가 필요한 이유. 많은 서비스들은 OTP, Email, SMS 등을 통해 알림 서비스를 사용중 이다. 금융기관: 사용자에게 비용에 관한 정보 제공. 이커머스: 사용자에게 주문에 관한 정보 혹은 구독 서비스 등에 대한 정보 제공 플랫폼: 사용자에게 구독, 뉴스, 정보 등에 대한 정보 제공. 기능 요구사항 구독한 사용자에게 알림을 보낼 수 있어야 한다. 우선순위 알림이 가능해야 한다. OTP 같은 경우 시간 이슈가 있기 때문에 높은 우선 순위로 고려 되어야 한다. 반대로, 뉴스 등은 낮은 우선 순위로 되어도 된다. Email, SMS, Mobile, Web, Hook 등 알림이 가능 해야 한다. Single/Bulk로 처리할 수 있는 기능이 있어야 한다. 같은 알림을 ..
Git Commit Convention and Useful Commit Message 1. Commit Message Convention의 필요 협업에 용이 기록 확인 용이 과거 이슈 추적이나 이슈 진행사항 확인 2. Commit Message 작성 방법 Type : Subject Body Footer 2.1 Type Feat : 기능 추가 HotFix : 긴급 버그 수정 Fix : 버그 수정 Build : CI/CD 관련 수정 Docs : 문서 추가, 수정, 삭제 Refactor : 리팩토링 Test : 테스트 코드 추가, 수정, 삭제 ETC : 기타 사항 2.2 Subject 제목의 길이는 최소화하고 마침표 없이 끝냄 명령문으로 작성 제목과 본문은 한 줄 띄워서 작성 Type : Subject 작성 ..
Github Action Github Action 개요 Github action 은 github에서 공식적으로 제공하는 work flow 자동화 툴. github repo 안에서 .github/workflows 경로에 yml 파일 작성으로 생성. Github Action 구성 다음 6가지의 개념으로 구성 되어 있음 Workflows Events Runners Jobs Steps Actions 워크 플로우(workflows) 자동화된 프로세스 단위. 하나 이상의 job으로 이루어져 있으며 설정한 이벤트에 의해 실행된다. 이벤트(Events) 워크 플로우를 실행하는 특정 활동이나 규칙이다. 커밋의 push, pull request가 생성 되었을 때뿐만 아니라 Github 외부에서 발생하는 활동으로도 이벤트를..
문제 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 문제 풀이 import collections import sys dx = [-1, 0, 1, 1, 1, 0, -1, -1] dy = [-1, -1, -1, 0, 1, 1, 1, 0] def bfs(graph, y, x): graph[y][x] = 0 queue = collections.deque([(y, x)]) while queue: yy, xx = queue.popleft() for..
문제 https://www.acmicpc.net/problem/2468 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 문제 풀이 import collections import sys dx = [0, 1, 0, -1] dy = [-1, 0, 1, 0] N = int(sys.stdin.readline().strip()) MAX_VALUE, MIN_VALUE = 0, 0 maps = [] for _ in range(N): case = list(map(int, sys.stdin.readline().split())) MIN..
문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제 풀이 import sys from collections import deque n, k = map(int, sys.stdin.readline().split()) MAX = (10 ** 5) def bfs(root, find): distance = [0] * (MAX+1) queue = deque([root]) while queue: x = queue.pople..