it-swarm-ko.tech

개인 파일 시스템 및 사용자 액세스

파일 경로로 Drupal 파일에 액세스하지 못하도록 보호하는 방법이 있습니까? (putting http://www.domain.com/files/image.jpg 주변 사용자가 브라우저 URL에 )?

1
Kevin

Drupal 모든 파일 요청을 처리하도록 선택할 수 있습니다. 이는 개인 파일을 선택하는 파일 설정에서 수행됩니다 (admin/settings/file-system).

액세스 확인은 hook_file_download .

이 작업을 수행하면 다운로드해야 할 모든 파일에 대해 Drupal을 부트 스트랩해야 함) 파일로드 프로세스 속도가 느려집니다.

업데이트

위의 방법은 file_create_url 다음과 같은 경로로 system/files/[path]. 그러나 실제로 사용자가 파일에 직접 액세스하지 못하게한다고 생각하지 않습니다. 선택한 웹 서버에서 설정해야합니다. 따라서 사용하는 모든 파일은 file_create_url 파일/파일 링크 여야합니다. Drupal 또한 사용자 프로필 이미지와 같은 일부 처리 코어 파일을 추가합니다. 그러면 다른 모든 파일에 대한 액세스 처리가 남게됩니다. 즉, 원본 또는 원하는 것을 거부하면서 이미지 캐시 파일을 허용 할 수 있습니다.

1
googletorp

나는 두 가지 방법을 봅니다.

  1. admin/settings/file-system (googletorp가 명시한대로)를 통해 "files-mode"를 private으로 변경하고 파일 경로를 webserved 파일 외부의 위치로 변경하십시오.

  2. "files-mode"를 private으로 변경하고 .htaccess (또는 웹 서버 구성의 다른 곳)에 일부 다시 쓰기 규칙을 설정하십시오. 이렇게하면 어떤 파일을 비공개로 제공하고 어떤 파일을 공개할지 제어 할 수 있습니다. 다음과 같은 것 :

    RewriteEngine On
    RewriteCond %{REQUEST_URI} ^/sites/default/files/(private/.*)$
    RewriteRule ^.*$ /system/files/%1 [L]
    

이제 "private"파일에 대한 모든 요청이 drupal에 의해 제어되는 시스템 경로에 다시 작성됩니다. 따라서 drupal 없이는 액세스 할 수 없습니다.

2
nonsenz