June 18, 2026 · 4 min read
같은 타겟에 같은 템플릿으로 Nuclei 스캔을 돌렸는데 매칭 수가 런마다 258~275로 흔들렸습니다. 원인은 OpenSSH 템플릿들이 SSH 포트에 동시 핸드셰이크를 날려 sshd MaxStartups에 걸린 것이었고, -concurrency를 낮춰 100% 재현성을 확보한 과정을 정리합니다.
June 09, 2026 · 4 min read
Rocky 9에서 빌드한 바이너리가 CentOS 6에서 GLIBC_2.34 not found로 실행이 안 됐습니다. 빌드 서버를 CentOS 6.5로 낮추는 전략과, 보안 하드닝 서버에서 만나는 /tmp noexec 문제와 --runtime-tmpdir 해결법을 정리합니다.
June 01, 2026 · 4 min read
개발 환경에서는 멀쩡히 동작하던 JSON 데이터 로더가 PyInstaller 바이너리에서 빈 dict를 반환했습니다. --collect-submodules와 --collect-data의 차이, sys._MEIPASS 폴백 패턴을 정리합니다.
May 27, 2026 · 5 min read
Pomodoro 타이머 앱에서 배경음이 뚝뚝 끊기는 버그를 겪었습니다. stopNoise 함수에 useCallback을 빠뜨렸고, 그게 useEffect deps 체인을 타고 매 렌더마다 오디오 컨텍스트를 close/reopen했습니다. useCallback을 왜, 언제 써야 하는지 정리합니다.
May 12, 2026 · 5 min read
Playwright로 1페이지는 수집되는데 2페이지부터 JSON 대신 빈 HTML이 반환되는 문제를 겪었습니다. Cloudflare가 AJAX 요청을 막는 원리와 새 컨텍스트 + init_script 오버라이드로 해결한 과정을 정리합니다.
May 12, 2026 · 5 min read
Pomodoro 타이머를 만들다가 설정이 반영 안 되고, 배경음이 끊기고, 초기화가 오작동하는 버그를 연달아 겪었습니다. 원인은 전부 stale closure였고, stateRef 패턴과 useCallback으로 해결했습니다.
May 11, 2026 · 11 min read
JWT 알고리즘 혼동 공격, none 알고리즘 취약점, OAuth CSRF, 오픈 리다이렉트, 세션 하이재킹까지 웹 인증·인가에서 실제로 발생하는 취약점과 안전한 구현 방법을 코드 중심으로 정리합니다.
May 06, 2026 · 12 min read
SSH 키 인증, sudo 최소 권한, PAM 패스워드 정책, fail2ban, 방화벽 설정까지 Linux 서버를 운영할 때 반드시 적용해야 할 보안 강화(하드닝) 방법을 실무 명령어 중심으로 정리합니다.
May 06, 2026 · 9 min read
Playwright로 브라우저 자동화와 E2E 테스트를 처음 시작하는 분을 위한 완전 가이드입니다. 설치, Chromium·Firefox·WebKit 설정, locator API, 스크린샷, playwright.config.ts, GitHub Actions CI/CD 연동까지 실전 예제 중심으로 정리합니다.