보안 업로드

로그인이 필요한 사이트에서 업로드를 안전하게 처리할 수 있는 간단한 해킹 방법을 하나 알게 되었습니다.

기본적으로 업로드를 위해 Authentication Based on Subrequest Result | NGINX Documentation 를 설정하면 됩니다. 유일한 문제는 로그인 요구가 활성화되어 있을 때 403/401을 반환하는 URL을 찾을 수 없다는 점입니다. 그래서 로그인하지 않은 상태에서 업로드에 접근하면 500 에러가 발생합니다. 이는 누군가 업로드 URL을 가지고 있고 로그인하지 않은 상태에서 접근을 시도할 때만 발생하는 일이므로, 그렇게 심각한 문제는 아닌 것 같습니다.

대략 다음과 같은 구조입니다:

# JP
    location = /auth {
        internal;
        proxy_pass http://discourse/categories;
        proxy_pass_request_body off;
        proxy_set_header Content-Length "";
        proxy_set_header X-Original-URI $request_uri;
    } 
    # END JP
    location ~ ^/uploads/ {

      auth_request /auth; #$JP
      # 참고: 헤더를 최상위 레벨에서 정의하여 상속할 수 없다는 점이 정말 번거롭습니다.
      #
2개의 좋아요