Rust 와 보안 2 — 웹 API 를 지키는 설정: 크기·시간 제한과 SQL 주입
Rust 웹 API 도 설정으로 지킨다. 큰 요청은 DefaultBodyLimit 로 413, 느린 요청은 TimeoutLayer 로 408 로 끊는다. SQL 을 format! 으로 이어 붙이면 Rust 도 주입에 뚫린다는 것을 실행하고 매개변수로 고친다.
Rust 웹 API 도 설정으로 지킨다. 큰 요청은 DefaultBodyLimit 로 413, 느린 요청은 TimeoutLayer 로 408 로 끊는다. SQL 을 format! 으로 이어 붙이면 Rust 도 주입에 뚫린다는 것을 실행하고 매개변수로 고친다.
axum 으로 REST API 를 실무 모양으로 짠다. AppError 에 IntoResponse 를 구현해 에러를 알맞은 상태 코드와 JSON 으로 바꾸고, 입력을 검증하고, Router 를 서버 없이 바로 불러 테스트한다.
Rust 를 쓰는 곳 가운데 가장 많이 꼽히는 것이 서버 백엔드·웹·네트워크 서비스다. 다만 웹 서비스 전체를 Rust 로 짓기보다, 느린 부분만 떼어 내거나 지연이 튀면 안 되는 서비스·프록시·서버리스 함수에 쓰는 경우가 많다. 공식 사례로 다섯 가지 방식을 정리한다.
axum 은 tokio 위의 Rust 웹 프레임워크다. Router 에 경로와 핸들러를 묶고 Json·Path·State 추출기로 요청을 받는다. 메모 API 로 201·200·404·422 응답을 127.0.0.1 에서 확인한다.