Programming137 Rust 바이너리 작게 만들기 Cargo.toml 에 다음을 추가하고,...[profile.release]strip = true # Automatically strip symbols from the bianryopt-level = "s" # Optimize for sizelto = true # Enable link time optimizationcodegen-units = 1 # Maximize size reduction optimizationsrelease 모드로 컴파일 한다.$ cargo build --release Programming/Rust 2025. 1. 3. Rust: Auto-Reloading Development Server (개발서버 자동 리로딩) cargo-watch 를 설치한다.$ cargo install cargo-watch원하는 프로젝트 폴더로 이동해서 아래와 같이 실행하면 라이브 리로딩 서버가 실행된다.$ cargo-watch -x run Programming/Rust 2025. 1. 3. Refresh Token 재사용 방지(Reuse Detection) Refresh Token 재사용 방지(Reuse Detection)는 Refresh Token이 도난당해 악의적인 사용자가 이를 재사용하려는 경우를 감지하고 차단하는 기술입니다. 이를 구현하려면 아래의 메커니즘을 사용할 수 있습니다.1. Refresh Token 저장소 사용Refresh Token의 상태를 서버에서 관리하여 사용 기록을 검증하는 방식입니다.구현 흐름:Refresh Token 저장 및 관리:Refresh Token 발급 시, 이를 서버의 데이터베이스(DB) 또는 캐시(Redis 등)에 저장합니다.저장 시 각 토큰에 고유한 식별자(UUID)와 사용자 정보, 만료 시간, 생성 시간을 기록합니다.토큰 사용 검증:클라이언트가 Refresh Token을 전송할 때마다, 서버는 DB 또는 캐시에서 해.. Programming 2024. 12. 26. JWT에서 Refresh Token은 어떻게 넘겨주나? JWT에서 Refresh Token을 전달하는 방식은 구현 목적, 보안 요구 사항, 클라이언트-서버 간 통신 방식에 따라 다양합니다. 일반적으로 두 가지 주요 방식이 사용됩니다:1. HTTP-Only Cookie로 전달이 방법은 가장 안전한 방법 중 하나로, Refresh Token을 HTTP-Only 쿠키에 저장하고, 클라이언트가 자동으로 서버로 전송하도록 설정합니다.장점:XSS(Cross-Site Scripting) 공격에 안전합니다.브라우저가 자동으로 쿠키를 관리하므로 클라이언트 코드에서 Refresh Token을 다룰 필요가 없습니다.구현 예시:(1) 서버에서 쿠키 설정:res.cookie('refreshToken', token, { httpOnly: true, // JavaScript로 접.. Programming 2024. 12. 26. HTTPS 통신에서 데이터가 탈취될 수 있을까? 실제 사례와 대응 방안 "HTTPS는 안전하니까 걱정할 필요 없다"는 이야기를 많이 들어보셨을 겁니다. 하지만 현실은 조금 다릅니다. HTTPS는 데이터를 암호화해 전송 중 탈취를 방지하는 중요한 기술이지만, 약점이 없는 건 아닙니다. 이번 글에서는 HTTPS 통신에서 데이터가 실제로 탈취된 사례와 이를 예방하기 위한 방법을 살펴보겠습니다.HTTPS는 왜 안전하다고 말할까?HTTPS(HTTP Secure)는 HTTP 프로토콜에 TLS(Transport Layer Security)를 결합해 보안을 강화한 통신 방식입니다. 이를 통해 데이터를 암호화하고, 서버의 신원을 검증하며, 데이터가 변조되지 않았음을 보장합니다. 이러한 강력한 보호 덕분에 HTTPS는 현재 가장 신뢰받는 웹 통신 방식으로 자리 잡았습니다.그렇다면, HTTPS.. Programming 2024. 12. 23. JWT 에서 토큰을 전달할때 Header의 Authorizaion 을 사용해야만 하는가? 아닙니다. JWT 토큰을 전달할 때 꼭 HTTP Header의 Authorization 헤더를 사용해야 하는 것은 아닙니다. Authorization 헤더는 가장 일반적이고 권장되는 방법 중 하나일 뿐입니다. 다른 방법도 상황에 따라 적절히 사용할 수 있습니다. 아래에서 각 방법과 장단점을 설명합니다.1. Authorization 헤더 사용 (권장)JWT를 전달할 때, 아래와 같이 Authorization 헤더에 Bearer 토큰으로 포함하는 방법이 일반적입니다.Authorization: Bearer 장점표준화: 대부분의 인증 라이브러리와 프레임워크에서 기본적으로 지원.보안: 토큰이 헤더에 포함되므로 민감한 데이터와 혼합되지 않음.캐싱 방지: HTTP 캐시 메커니즘에 의해 민감한 데이터가 캐시되는 문제를.. Programming 2024. 12. 23. 파이썬 filter 함수를 알아보자 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 이라는 리스트에서 짝수만 뽑아낸 [2, 4, 6, 8, 10] 리스트를 만들려고 합니다. 어떻게 하면 될까요? 우선, for 구문을 이용해서 할 수 있겠지요?list_orig = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]list_result = []for num in list_orig: if num % 2 == 0: list_result.append(num)print(list_result) 이것을 filter 함수를 이용해서도 구현할 수 있는데요. 먼저 filter 함수는 어떤 형태로 사용하는지 봅시다.filter(조건함수, 순회가능한객체)조건함수는 걸러내기위한 조건을 담은 함수를 의미하고, 순회가능한객체는 리스트,.. Programming/Python 2024. 11. 29. 현 시점에서 Rust 언어를 배워야하는 이유 Rust 언어를 배워야하는 이유는 여러가지가 있다. 먼저, Rust 언의 장점을 알아보자. 안전한 메모리 관리로 보안취약성 줄임 (C/C++ 에 비해서)C/C++에 버금가능 강력한 성능편리한 패키지 관리자 제공 (Cargo, crates.io)여러 개발도구 지원 (IntelliJ, VS Code, Vim, Helix 등) 2015년부터 스택 오버플로우 설문조사에서 매년 가장 좋아하는 언어 중에 하나로 선정되고 있다.https://survey.stackoverflow.co/2023/#section-admired-and-desired-programming-scripting-and-markup-languages Windows, Linux, Android 아마존, 구글, 마이크로소프트, 페이스북, 모질라, 리눅.. Programming/Rust 2024. 11. 27. 파이썬 map 함수를 알아보자 리스트를 [1, 2, 3, 4, 5] --> [10, 20, 30, 40, 50] 과 같이 변환하려면 어떻게 할까? 먼저, 생각나는 것은 for 문을 사용해볼 수 있을 것이다.list_orig = [1, 2, 3, 4, 5]list_result = []for num in list_orig: list_result.append(num * 10)print(list_result)이것을 map 함수로도 구현할 수 있는데, map 함수의 형식을 먼저 살펴보자.map(조작함수, 순회가능한객체)조작함수 부분은 위의 for 구문에서 num * 10 의 기능을 해주는 함수이고, 순회가능한객체는 리스트, 튜플 등이 해당된다.일단 조작함수부터 구현해보자.def mul_ten(num): return num * 10 .. Programming/Python 2024. 11. 26. 파이썬 lambda 함수 lamda 함수란, 한줄짜리 짧은 이름없는(익명) 함수 일반적인 함수의 사용예def add(x, y): return x + yprint(add(10,20))# 파이썬에서 함수는 객체이며, 변수에 저장이 될 수 있다.add2 = addprint(add2(10,20)) lambda 함수 기본형태lambda 인자: 리턴값 사용예result = (lambda x, y: x + y)(10, 20)print(result) # 람다 함수를 변수에 넣는다.add3 = lambda x, y: x + yprint(add3(10,20)) 이런식으로 리스트에도 넣을 수 있다. 이것은 일반 함수도 가능한 일이다.lambda_list = [lambda x: x+10, lambda x:x+100]print(lambda_lis.. Programming/Python 2024. 11. 15. Rust 시작해보기 (hello world 만들어보기) 이제, 첫번째 프로그램 hello world 를 만들어보자. 적당한 폴더에 main.rs 파일을 만들어보자.fn main() { println!("안녕, 세상아 ~!");}그리고, 터미널에서 rustc main.rs 라고 입력해서 컴파일해본다. 그리고 디렉토리를 확인해보면, main.exe 라는 실행파일이 생긴 것을 확인할 수 있다.main.exe 를 실행해보면 아래처럼 잘 나올것이다. 성공 ~!!!그런데, 파일도 많아지고, 여러가지 라이브러리도 사용하려면 이렇게 해서는 할 일이 많아진다. 그래서 Rust에서는 cargo 라고 하는 빌드툴을 제공한다. 일단, cargo 의 버전부터 확인해보자.cargo 를 이용해서 프로젝트를 생성할 수 있다. cargo new 프로젝트명 으로 하면되고, 일단 car.. Programming/Rust 2024. 11. 12. Rust 시작해보기 (rustup 설치) https://www.rust-lang.org/ 에 방문해보자. Rust 를 설치를 하려면, Install 메뉴를 선택한다.그러면, 위와 같이 나오는데, OS가 Linux 인경우에는 화면의 밑부분에 curl 을 이용해서 설치하면 간단하게 끝난다. 그런데, Windows 의 경우에는 Visual Studio C++ Build tools 를 다운로드/설치를 하고, rustup-init.exe 파일을 다운로드 하여 설치해야 한다. 먼저, Visual Studio C++ Build tools 을 클릭해서 설치하자.다운로드 버튼을 클릭하면, vs_BuildTools.exe 파일을 얻게 될 것이다. 이것을 또 실행해보자.위와 같은 화면이 나오면, "C++를 사용한 데스크톱 개발" 항목을 선택하고, "설치" 버튼을.. Programming/Rust 2024. 11. 8. 이전 1 2 3 4 ··· 12 다음