본문으로 이동
서버·인프라
-
서버·인프라
PHP에서 prepared statement로 바꾸면 JSON 타입이 바뀐다
mysqli의 query()를 prepared statement로 바꾸면 json_encode에서 "7"이 7이 된다. PHP 8.5 + MariaDB 11.8 실측과, 구버전 Flutter 앱이 죽는 이유.
-
서버·인프라
LiteSpeed .htaccess로 한글 URL 리라이트하기: 실측으로 확인한 것
패턴은 인코딩 전일까 후일까, 공백은 어떻게 쓸까, 301은 쿼리스트링을 남길까. 운영 중인 LiteSpeed에 요청 23번을 보내 확인한 결과와 안전한 실험 방법.
-
서버·인프라
오래된 PHP의 SQL 인젝션·XSS를 출력 1바이트도 안 바꾸고 고치기
10년 된 앱 백엔드 PHP 36개 파일, 90곳을 고치고 저장해 둔 실제 응답과 바이트 비교로 무변경을 확인했다. 스캐너가 놓친 두 패턴과 WAF가 있는 환경에서 검증하는 법.
-
서버·인프라
호스팅 계정 이전 후 조용히 깨져 있던 다섯 가지
계정을 옮긴 뒤에도 모든 페이지가 200이었다. 그런데 FTP 루트, 크론 경로, Python venv, 실행 권한, 크론의 '분' 설정이 소리 없이 깨져 있었다.
-
서버·인프라
호스팅 CDN이 API 응답과 301까지 캐시하고 있었다
라우팅을 바꾼 뒤 API URL 4개가 CDN에서 옛 301을 계속 돌려줬다. Hostinger CDN이 무엇을 캐시하는지 헤더별로 실측하고, 속지 않는 검증 방법을 정리했다.
-
서버·인프라
구버전 앱을 멈추지 않고 레거시 PHP API 정리하기
API 폴더 8개, PHP 파일 102개, 깊이가 다른 include 네 가지, 강제 업데이트할 수 없는 앱. 내부 리라이트와 응답 비교로 /api/v1 아래로 옮긴 과정.
↑