비디오 및 자막 · 다이렉트 미디어 다운로더
서명 및 만료되는 URL: 직접 링크가 내일 작동하지 않을 수 있는 이유
· 배경
URL 보안 다운로드
많은 직접 링크에는 쿼리 문자열에 서명과 만료 시간이 포함되어 있습니다. 이 게시물에서는 미리 서명된 URL이 작동하는 방식, CDN 및 스토리지 서비스가 이를 사용하는 이유, 실패하기 전에 URL을 인식하는 방법에 대해 설명합니다.
링크는 금요일에 작동했으나 월요일에 오류를 반환합니다. 이는 대부분 '깨진' 직접 링크의 패턴입니다.
링크는 금요일에 성공하고 파일 이동 없이 월요일에 HTTP 오류를 반환할 수 있습니다. 쿼리에는 시도 사이에 유효성이 종료되는 시간 제한 인증이 포함될 수 있습니다.
ToolAcre는 읽을 수 있는 비성공 상태를 보고하고 주소가 만료되었거나 이동되었거나 로그인이 필요할 수 있음을 기록합니다. HTTP 응답을 사용할 수 있는 경우 만료를 CORS로 재해석하지 않습니다. 유효한 링크는 공유된 후 수신자가 사용을 시작하거나 완료하기 전에 만료될 수 있기 때문에 대규모 전송은 이러한 타이밍 차이에 특히 취약합니다. 장시간 녹화하면 전송 공유, 시작, 완료 사이에 승인이 만료될 수 있으므로 타이밍 위험이 더욱 커집니다.
서명된 URL이란 무엇입니까? 일반 파일 경로와 서명, 만료 및 때로는 허용되는 IP가 모두 쿼리 문자열에 포함되어 있습니다.
서명된 URL은 승인을 확인하기 위해 제공 시스템에서 사용하는 값과 일반 리소스 경로를 결합합니다. 이는 서명, 만료, 자격 증명 범위, 정책 또는 클라이언트 제한을 나타낼 수 있습니다.
매개변수 이름과 인코딩은 공급자마다 다릅니다. 브라우저는 이를 쿼리 데이터로 처리하는 반면, 서버는 요청 시 해당 조합이 유효한지 여부를 결정합니다. 일부 구성표는 메서드나 헤더도 바인딩하므로 공급자는 GET을 허용하지만 HEAD를 거부할 수 있습니다. 문서화된 서명 알고리즘만이 그 결과를 설명할 수 있습니다. 일부 공급자는 확인에 메서드 또는 선택한 헤더를 포함하여 동일한 표시 쿼리에서 HEAD를 거부하면서 GET을 허용합니다.
스토리지 서비스 및 CDN이 이를 사용하는 이유 - 비공개 파일을 공개하거나 로그인을 요구하지 않고 공유
스토리지 서비스 및 CDN은 경로를 영구적으로 공개하거나 모든 다운로드에 대화형 로그인을 첨부하지 않고 서명된 주소를 사용하여 개인 개체를 공유합니다.
따라서 라이브 링크 소유는 민감할 수 있습니다. 신뢰할 수 없는 릴레이에 붙여넣거나, 스크린샷을 게시하거나, 승인된 작업 흐름을 벗어난 공유 노트에 남겨두는 것을 피하세요. 유효 기간이 짧으면 링크가 유출될 경우 노출이 줄어들고, 취소 및 액세스 로그는 다운로드한 URL 자체의 기능이 아닌 공급자 기능으로 유지됩니다. 유효 기간이 짧으면 누출로 인한 노출이 줄어들고, 취소 및 액세스 로깅은 발급 공급자의 기능으로 유지됩니다.
쿼리 문자열 읽기 — 일반적인 URL 형태에서 만료 타임스탬프 및 서명 매개변수 찾기
만료, 서명, 토큰, 정책 또는 공급업체 접두사가 붙은 인증을 제안하는 쿼리 이름을 찾습니다. 획기적인 값은 마감일을 나타낼 수 있지만 변환하기 전에 문서가 필요합니다.
ToolAcre의 노멀라이저는 의도적으로 `token`, `expires`, `signature` 및 X-Amz 스타일 필드를 유지합니다. 권한을 제거하면 주소가 지정된 요청이 변경되므로 알려진 분석 형태의 키만 제거됩니다. 이름이 분명하지 않은 경우에도 불투명해 보이는 값이 서명된 정식 요청의 일부일 수 있으므로 익숙하지 않은 매개변수를 무심코 디코딩하거나 제거하지 마세요. 알 수 없는 매개변수는 이름이 보안과 관련이 없어 보이는 경우에도 정식 서명에 참여할 수 있으므로 변경하지 않고 보존하세요.
작업된 예: 타임스탬프가 있는 저장소 링크 — 언제 만료되고 이후에 오류가 어떻게 나타나는지 확인
공급자 문서에서 만료 매개변수를 epoch 초로 정의한다고 가정합니다. 문서화된 규칙에 따라 변환하고 대규모 전송을 시작하기 전에 현재 UTC 시간과 비교하십시오.
기한이 지나면 호스트는 403, 다른 오류 또는 리디렉션을 반환할 수 있습니다. 보편적인 반응 형태는 없습니다. 구체적인 증거는 꾸며낸 메시지가 아니라 해당 공급자가 제공하는 상태와 본문입니다. 호스트가 구조화된 오류 본문을 제공하는 경우 이를 생성한 서명된 주소를 게시하지 않고 소유자를 위해 이를 보존합니다. 소유자를 위해 구조화된 오류 응답을 유지하는 동시에 이를 생성한 서명된 주소가 더 널리 공개되지 않도록 보호합니다.
여기서 다루지 않는 내용 — 파일 소유자만 수행할 수 있는 링크 갱신
다운로더는 주소를 갱신, 사임, 새로 고침 또는 확장할 수 없습니다. 소스 또는 승인된 공유 시스템을 제어하는 당사자만이 다른 유효한 링크를 발행할 수 있습니다.
자격 증명이 생략되므로 로그인된 세션도 유지되지 않습니다. 액세스에 URL 인증이 아닌 계정 쿠키가 필요한 경우 해당 파일은 이 제품의 설계를 벗어난 것입니다. 타임스탬프를 수동으로 변경하면 마감일이 서버 확인에 참여하기 때문에 대부분의 서명이 무효화됩니다. 이는 확장 메커니즘이 아닙니다. 타임스탬프를 변경하면 마감일 자체가 편집 가능한 메타데이터 역할을 하기보다는 서명에 기여하기 때문에 일반적으로 확인이 무효화됩니다.
요약: 링크가 활성화된 동안 다운로드 — Direct Media Downloader의 URL 확인 및 알림 가져오기가 만료되는 링크에 어떻게 맞는지
인증된 링크가 활성화되어 있고 파일이 브라우저 작업 흐름에 맞는 동안 다운로드하세요. 로컬 검증을 통해 초기 주소가 구성표 및 호스트 정책을 충족하는지 확인한 다음 명시적 요청을 통해 원본이 해당 서명을 평가할 수 있습니다.
호스트 공지에서는 토큰이 유효한지 여부를 공개하지 않습니다. Check Link는 HEAD와의 연결 가능성을 테스트할 수 있지만 일부 공급자는 HEAD를 GET과 다르게 처리하므로 갱신 또는 보증이 아닙니다. 보관 작업 흐름의 경우 전송 창과 링크 발급을 조정하고 보낸 사람의 신뢰할 수 있는 복사본을 삭제하기 전에 저장된 바이트를 확인하세요. 계획된 전송 창에 맞춰 발행을 조정한 다음 보낸 사람의 신뢰할 수 있는 사본을 폐기하기 전에 완료된 자산을 확인하세요.