일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 정보보안
- graph
- 정보보안기사
- 랜섬웨어
- Database
- 사이버보안
- Golang
- go
- 자격증
- GraphDB
- 정리
- 시험
- Neo4j
- SQLD
- 보안솔루션
- 해킹
- 사이버 보안
- 프로그래밍
- 보안
- neo4j성능
- concurrency
- 위협 탐지
- 그래프 데이터베이스
- 데이터모델링
- cypher
- security
- IT보안
- 공부
- 보안 분석
- 그래프데이터베이스
- Today
- Total
목록Golang (7)
Jamie the programmer

사이버보안 도구들은 각기 다른 언어로 데이터를 생성합니다. SIEM, 방화벽, 엔드포인트 보안 시스템이 서로 다른 형식의 로그를 출력하면 분석가는 40% 이상의 시간을 데이터 정규화에 할애해야 합니다. Open Cybersecurity Schema Framework(OCSF)는 이 문제를 해결하기 위해 등장한 오픈소스 표준입니다. 이 글에서는 OCSF의 개념, 장점, 실제 구현 방법(Go 언어 예시 포함), 스키마 JSON 구조까지 총체적으로 다룹니다. 1. OCSF란 무엇인가?문제: 사이버보안의 ‘바벨 탑’도구 간 호환성 부재: 각 솔루션의 독자적 데이터 형식으로 통합 어려움.비효율적 운영: 분석가의 시간이 위협 분석 대신 데이터 파싱에 소모됨.느린 대응 속도: 수동 매핑으로 인한 지연.해결책: OCS..

대규모 트래픽을 다루는 서버나 API에서는 Rate Limiting(속도 제한)이 매우 중요하다.보안 관점에서도, 무차별 암호 대입 공격(Brute Force)이나 Dos/DDoS 공격과 같은 악의적 트래픽을 효과적으로 제한하기 위해서는 Rate Limiting이 필수적이다.또한, 계정 도용 방지, API Key 남용 방지, 자원(네트워크, CPU, DB 등) 보호 등 다양한 측면에서 보안 강화를 기대할 수 있다.Go 언어에서는 표준 라이브러리에 포함된 확장 패키지 golang.org/x/time/rate와, 오픈소스로 제공되는 go.uber.org/ratelimit 라이브러리가 대표적이다. 이 글에서는 이 두 라이브러리가 구현하고 있는 대표적인 알고리즘인 Token Bucket과 Leaky Bucket..

1. Rate Limiting이란?*속도 제한(Rate Limiting)*은 리소스에 대한 접근을 일정 시간당 특정 횟수로 제한하는 메커니즘을 말한다.예: API 요청, 디스크 I/O, 네트워크 트래픽 등주요 목적서비스의 품질 유지: 지나치게 많은 요청이 몰려와도 안정적으로 처리악의적 공격 방어: 무차별 암호 대입 공격(Brute force)이나 Dos/DDoS 등 방지공정성(Fairness): 특정 사용자나 특정 작업이 과도하게 자원을 사용하지 않도록 제어시스템 부하 관리: 지나친 트래픽으로 인한 시스템 장애 예방Go에서는 고루틴(goroutine), 채널(channel), 그리고 **티커(ticker)**를 활용하여 쉽게 Rate Limiting 기능을 구현할 수 있다.예시 자료: Go By Exam..

1. 중첩을 피하고 에러를 먼저 처리하라✅ 핵심 로직을 깊게 중첩하지 않도록 에러를 먼저 처리// Bad: 중첩이 깊어지는 코드func process(value int) error { if value > 0 { if value = 100 { return errors.New("value must be less than 100") } if value%2 != 0 { return errors.New("value must be even") } return nil}2. 중복을 피하라✅ 반복되는 코드를 함수로 추출하여 재사용// Bad: 중복 코드 발생func printHelloWorld() { fmt.Println("Hello, World!")}func printHelloUser(name string) { ..

1. UML Diagram1.1. GraphvizGitHub - ondrajz/go-callvis: Visualize call graph of a Go program using Graphviz# Latest releasego install github.com/ofabry/go-callvis@latest# Development versiongo install github.com/ofabry/go-callvis@mastergo-callvis 적용 사례1.2. PlantUMLGitHub - jfeliu007/goplantuml: PlantUML Class Diagram Generator for golang projectsgo get github.com/jfeliu007/goplantuml/parsergo i..

◎ 실전 Go 프로젝트에 투입되기 전에 사전에 알아야할 Go 언어의 기본 및 필수 개념을 설명해 드립니다. ¶ 이번 글에서 다룰 내용은 다음과 같습니다. 1. 문자열 2. 구조체 3. 함수 4. 메서드 이어지는 다음글 [Golang] 기본적으로 알아야할 기초 지식 part3 에서는 고루틴, 채널, 컨텍스트 를 다루겠습니다. 1. 문자열 1.1. 문자열 변환 문자열은 유니코드 문자의 코드값을 정수로 표현한 값(rune 또는 int32)의 시퀀스이므로, []rune (또는 []int32)으로 변환할 수 있습니다. 1바이트로 표현할 수 있는 아스키 문자열은 []byte(또는 []uint8)로 변환할 수 있다. 아스키가 아닌 문자열을 []byte로 변환하면 잘못된 코드값으로 변환될 수 있으니 주의해야 합니다. ..

◎ 실전 Go 프로젝트에 투입되기 전에 사전에 알아야할 Go 언어의 기본 및 필수 개념을 설명해 드립니다. ¶ 이번 글에서 다룰 내용은 다음과 같습니다. 1. GOROOT 2. GOPATH 3. GOMODULE 4. 패키지 5. 포인터 6. 타입별 "zero value" 7. 인스턴스 이어지는 다음글 [Golang] 기본적으로 알아야할 기초 지식 part2 에서는 문자열, 구조체, 함수, 메서드 를 다루겠습니다. 1. GOROOT - go sdk를 설치한 디렉토리를 나타냅니다. - 자바에 비유를 들자면 JAVA_HOME 에 해당한다고 볼 수 있을 것 같습니다. 2. GOPATH - Go 프로젝트의 import 위치를 잡아줍니다. - 소스코드를 찾는 위치 결정 뿐만 아니라 모듈을 다운로드 하는 장소도 결정..