blog.stackframe.dev

Web (11)

[PHP 8.2] 동적 속성 기능 제거 예정

PHP 8.2가 2022년 12월 8일에 출시되었다. 최근까지 개인적으로 정신없는 나날을 보냈고 이런 저런 이유로 업데이트를 미루다 오늘 서버 시스템을 업데이트했다.

NGINX 원거리 리버스 프록시 지연 문제

최근 웹 서버 최적화를 진행하는 도중 엄청난 딜레이를 발생시키는 요청을 발견하였다.

외부 링크 클릭 시 Referer가 포함되지 않게 하기

사용자가 내 사이트에서 다른 사이트로 가는 링크를 클릭하면 출발지 URL이 Referer 헤더에 포함되어 목적지 서버에 들어간다. 이걸 통해 목적지 서버가 사용자들의 행동을 분석하는데 사용되기도 한다.

현재 Unix time 밀리초 단위로 가져오기

로그를 남길 때 시각을 Unix time(epoch)로 남기면 기준 시간대가 달라져도 쉽게 변환이 가능하므로 편리하다. 다만 접속이 많은 서버라면 같은 시각에 여러 로그가 기록될 가능성이 높고, 데이터베이스에서 정렬을 하더라도 실제로 기록된 순서대로 정렬되지 않는 문제가 있다.

[PHP 8.1] array_is_list() 함수 추가

PHP 8.1에는 다른 흥미로운 기능들도 많지만 그 중에 소소하게 귀찮음을 덜어줄 array_is_list() 함수가 생겼다. 이 함수는 배열이 리스트 형태로 되어있는지 검사한다. 예전에는 동일한 기능을 하는 함수를 직접 구현해야 했지만 이제 PHP 언어 자체에서 이 기능을 지원한다.

[Nginx] IP로 접속 시 인증서가 노출되지 않게 하기

Nginx를 사용중인 서버에 HTTPS 포트인 443에 도메인 대신 IP로 접속하면 가장 먼저 설정된 HTTPS 서버의 인증서가 전달되고 브라우저에는 인증서 경고가 뜬다. 이때 인증서를 확인하는 것으로 이 서버에 어떤 사이트가 설정되어 있다는 정보가 노출될 수 있다.

mime_content_type() 함수로 파일 MIME 타입 알아내기

파일 업로드를 구현할 때 특정 타입의 파일만 업로드 가능하도록 제한하고 싶은 경우가 있다. 이걸 구현하기 위해 파일 이름에서 확장자를 분리하거나 브라우저로부터 파일을 업로드 할 때 전달되는 MIME 타입을 사용하는 경우가 많다. 하지만 이 방법들은 사용자의 입력을 순순히 받아들인다는 점에서 악용 될 가능성이 존재한다.

[PHP] 이미지 메타데이터 제거하기

카메라로 사진을 찍으면 EXIF 포맷으로 찍은 시간, 기기 모델명, 위치, 조리개 값 등 여러 정보가 사진 안에 포함된다. 그래서 개인정보 보호를 위해 이러한 정보를 모두 제거하는 기능이 필요한 경우가 생긴다.

아무 유니코드나 HTML 엔티티로 표현가능하지 않음

PHP 소스코드 중 HTML 엔티티 디코딩하는 부분에서 
가 들어오면 잘못된 코드로 처리하는 구문이 있어서 왜 그런건지 찾아보았다.

hash_equals() 타이밍 공격에 안전한 해쉬 비교 함수

PHP 내장 함수들을 둘러보다 hash_equals()라는 재미있는 함수를 발견했다. 설명을 보니 타이밍 공격을 방지하기 위해 만들어진 함수인 것 같다.

1 2