2015-01-01 5 views
0

뉴스 레터 구독 시스템이 있는데 일부 파일 (예 : 사용자를 구독하는 스크립트)에 대한 액세스를 거부하고 싶습니다. 내가 겪었던 문제는 외부에서 오는 모든 사람들을 위해 파일에 대한 액세스를 거부해야하지만 스크립트는 서로 액세스 할 수 있어야한다는 것입니다. 해당 URL을 입력하여 subscribe.php에 액세스하는 것이 가능하지 않아야서버의 특정 파일에 대한 액세스 거부

  • index.html을
  • subscribe.php

:

예를 들어, 나는 다음과 같은 파일이 있습니다. 그러나 index.html은 양식에 입력 된 데이터를 subscribe.php로 보낼 수 있어야합니다.

내가 내 루트 디렉토리에 index.html을 떠나 제한 폴더 /에 subscribe.php 이동 : 여기

는 지금까지 시도 것입니다. .htaccess 파일을 제한 폴더에 추가했습니다. 내가 URL을 통해 subscribe.php에 액세스하려고 할 때 deny from all

이 나에게 403 오류를 제공하지만 index.html을에서 양식을 제출할 때 그것은 또한 나에게

내 질문을 같은 오류를 제공합니다 htaccess로는 포함 : .htaccess 파일은 내가 원하는 것을 아카이브하기 위해 어떻게 보이고, 왜 내가 시도하지 않은 것이 작동하지 않는가?

답변

1

내가 다 퉜다 문제는 내가 외부에서 오는 사람을 위해 파일에 대한 액세스를 거부 할 필요가 있다는 것입니다,하지만 스크립트는 서로 에 액세스 할 수 있어야합니다.

틀렸어.

내가 다 퉜다 문제는 내가 외부에서 오는 사람을 위해 파일에 대한 액세스를 거부 할 필요가 있다는 것입니다,하지만 스크립트는 서로 에 액세스 할 필요가 나중에 말과 일치하지 않습니다.

은 양식을 제출하지 않습니다. 클라이언트의 브라우저이 웹 요청과 함께 양식을 제출합니다. 다음과 같이 생각하지 마십시오 :

index.html은 형태로 입력 된 데이터를 subscribe.php로 보낼 수 있어야합니다.

그런 일은 일어나지 않습니다. index.html에는 클라이언트의 브라우저에서 렌더링 할 때 html이 들어있어 브라우저에 등록 양식을 제출하는 방법과 방법을 알려줍니다.

몇 가지 당신이 시도 할 수 있습니다

  • 양식은 일반적으로 POST 요청을 제출합니다.subscribe.php을 작성하여 GET 요청을 차단하고 적절한 양식 제출 정보를 얻을 수 있습니다.
  • 참조 웹 페이지가 실제로 'index.html'인지 확인하기 위해 Referer [sic] 헤더를 검사 할 수 있습니다. 알려진 값을 가진 임의의 http 헤더처럼 위조하기는 쉽지 않다는 경고를받습니다.
  • PHP 세션은 제출 양식을 게시하기 전에 index.html에 대한 클라이언트의 액세스를 추적하는 데 사용될 수 있습니다. PHP 세션 (일반적으로)은 클라이언트 쿠키를 사용하여 '토큰'세션을 저장 한 다음 서버 또는 세션 캐시에 저장된 정보의 해시로 서버 측에 연결합니다. 프로그래밍이 잘되면 클라이언트는이 데이터에 액세스 할 수 없으므로 'HasVisitedIndex'또는 세션에서 세션 변수를 설정 한 경우에만 세션 변수 'HasVisitedIndex'를 가져올 수 있습니다.

아마도 다른 솔루션이있을 수 있지만 볼 수 있듯이 HTTP의 상태 비 저장 클라이언트 - 서버 모델로 인해 완벽한 슬램 - 덩크는 없습니다.

+0

클라이언트 브라우저가 항상 스크립트에 액세스해야하기 때문에 내 방법이 작동하지 않는다는 것을 알고 있습니까? – Lupy

+0

예. subscribe.php는 근본적으로 index.html 또는 다른 HTTP 자원과 동일한 성격을 가지고 액세스됩니다. _client_가 리소스에 액세스하면 PHP는 페이지를 렌더링하고 등록과 같은 입력을 처리하고 데이터베이스에 액세스하는 등 _server_에서 실행됩니다. 결과가 HTTP 응답으로 클라이언트에 다시 전송되기 전에 실행이 완료됩니다. –

+0

파렐 감사합니다. 하나 더 질문 : 비록 내 데이터베이스에 연결하는 모든 세부 정보를 포함하는 config.php 파일을 가지고, 그것은 데이터가 아닌 다른 아무것도하지 않습니다. 클라이언트가 파일에 액세스 할 수있는 경우 보안 문제가 있습니까? – Lupy

관련 문제