문제

내 PHP 앱은 404 개의 문서를 사용하여 HTML 파일을 생성하여 동일한 HTML 파일에 대한 여러 쿼리로 생성이 한 번만 실행되도록합니다.

파일을 끌어 올리려면 사용자가 설립 된 PHP 세션이 있어야하므로 HTML 파일에 대한 요청을 가로 채고 싶습니다.

최상의 경우, 세션 ID는 URL에 사용되며 강제로 추가 인증으로 사용할 수 있습니다. 예를 들어 로그인하면 SessionID가 발행되고 특정 HTML 파일 만 액세스 할 수 있습니다.

쿠키를 변경함으로써 요청을 스푸핑 할 수는 있지만 괜찮습니다.

이 작업을 어떻게할까요?

도움이 되었습니까?

해결책

이와 같은 것이 효과가있을 수 있습니다 (테스트하지 않았습니다) :

RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html

그것은 당신이 부여한다고 가정합니다 "-$session_id.html" 파일 이름에 ($session_id PHP의 세션 ID).

안전해야하며 이점은 파일이 PHP를 전혀 호출하지 않고 웹 서버에서 직접 제공한다는 것입니다.

다른 팁

SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
  Order Deny,Allow
  Deny from all
  Allow from env=let_me_in
</Directory>  

물론 사용자는 브라우저에서 이러한 쿠키를 수동으로 생성 할 수 있습니다 (Firefox의 경우 확장 기능이 있으며 항상 브라우저의 쿠키 스토어를 편집 할 수 있습니다).

당신은 사용할 수 있습니다 Apache 모듈 mod_rewrite 요청을 리디렉션합니다 .html PHP 스크립트에 대한 URL :

RewriteEngine on
RewriteRule \.html$ script.php [L]

요청 된 URI 경로 및 쿼리는 $_SERVER['REQUEST_URI'] 변하기 쉬운.

캐시 된 파일을 웹 루트에서 꺼내지만 여전히 PHP가 액세스 할 수있는 곳에 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top