웹 파일의 표시 및/또는 실행을 허용하지만 htaccess를 사용한 직접적인 URL 액세스는 허용하지 않습니다.

웹 파일의 표시 및/또는 실행을 허용하지만 htaccess를 사용한 직접적인 URL 액세스는 허용하지 않습니다.

내가 달성하고 싶은 것은 다음과 같습니다

내 도메인의 브라우저에서만 파일 형식을 표시( mp4| jpg| )하고 파일 형식을 실행( | )할 수 있기를 원 하지만 브라우저 주소 표시줄에 URL을 입력하여 파일에 직접 액세스하는 것을 원하지 않습니다.icojscss

내가 기대하고 행한 것은

PHP에 익숙해지면 $_SERVER['HTTP_REFERER']다음과 같은 URL을 얻습니다.http://도메인 이름.xyz/main.php그러나 같은 것이 사실인지는 모르겠습니다 .htaccess. .htaccess에서는 에서 HTTP_REFERER이와 같은 정규식 패턴을 사용 ^https?://(www.)?domainname\.xyz/.*$하지만 URL 패턴을 사용하면 https?://(www.)?domainname\.xyz/main.php에서 정확한 URL을 하드코딩할 수 있습니다 .htaccess. 이러한 URL은 오류를 일으킬 수 있으므로 사이트의 코드를 따라 스크립트에 통합했습니다. 저는 htaccess 정규식 전문가가 아닙니다.

그래서 저는 조사 결과 다음과 같은 .htaccess를 가져와 다양한 사이트에서 추적했습니다.

 RewriteEngine On
 RewriteCond %{HTTP_REFERER} !^https?://(www.)?domainname\.xyz/.*$ [NC]
 RewriteRule \.(jpg|js|css|mp4)$ - [NC,F,L]

또한 다양한 사이트에서 다음 코드를 사용해 보았습니다.

SetEnvIf Referer "!^https?://(www.)?domainname\.xyz/.*$" localreferer
<FilesMatch "\.(jpg|js|css|mp4)$">
    Require env localreferer
</FilesMatch>

위 코드에서 현재 일어나는 일은 다음과 같습니다.

.htaccess스크립트를 사용하면 브라우저에 파일 형식만 표시되고 mp4브라우저 주소 표시줄의 URL을 통해 직접 접근할 수 없으며 403 Forbidden오류가 표시됩니다.

다른 모든 파일 형식은 브라우저에 표시/실행되거나 URL을 사용하여 주소 표시줄에서 직접 액세스할 수 있습니다.

돕다

저는 htaccess, 정규식 전문가가 아니기 때문에 이에 대해 여러분의 도움을 구하고 있습니다. 며칠 동안 이것에 대해 연구했지만 여전히 해결하지 못했습니다. 당신의 도움으로 나의 지식은 성장할 것입니다.

답변1

당신이 원하는 것은 불가능합니다. JavaScript 프로그램을 실행하거나 CSS 형식 파일을 적용하려면 브라우저에서 해당 파일을 다운로드해야 합니다. 그건정확히브라우저의 URL 표시줄에 입력된 URL을 여는 것과 동일한 메커니즘입니다.

또한 데이터를 가져오는 방법이 다르더라도: 브라우저가지다어떤 방식으로든 데이터를 가져옵니다. 그 순간에는 사용자의 컴퓨터에 있으므로 서버의 제어를 받지 않습니다.

웹사이트, 내장된 JS 및 CSS가 사용자 컴퓨터에서 실행되는 프로그램이라는 사실을 직시해야 합니다. 이를 위해 그들은 귀하의 서버에서 이러한 것들을 얻습니다. 이 문제를 해결할 수 있는 방법이 없습니다.

답변2

솔루션의 시작 경로를 수정하려면 첫 번째 추측은 정규식을 변경하는 것입니다.

\.(jpg|js|css|mp4)($|\?|&)

정보가 부족해서(내 마지막 댓글 참조)여기) 요청될 실제 URI만 추측할 수 있습니다.

최선의 선택 FileMatch- 변형.


하지만 참고하세요"리퍼러에 의한 차단"은 실제로 안전하지 않습니다.. 브라우저나 해당 플러그인은 자동으로 리퍼러를 조작할 수 있습니다. 여기에 이미지 설명을 입력하세요.

절대적인 보호를 기대한다면 내가 할 수 있는 말은 이것뿐이다.마커스 뮐러그리고라티에절대적인 보호는 불가능하다는 것이 사실이다. 파일의 실제 URI를 추출하려는 노력을 강화하거나 사용자 액세스 제어 또는 암호화 솔루션(예: DRM)을 통해 대상을 제한할 수 있습니다.

관련 정보