Pregunta

Mi aplicación PHP usa Documentos 404 para generar archivos HTML, de modo que múltiples consultas al mismo archivo HTML solo hacen que la generación se ejecute una vez.

Me gustaría interceptar las solicitudes a los archivos HTML para que el usuario necesite tener una sesión PHP establecida para extraer los archivos.

En el mejor de los casos, SESSION ID se usaría en la URL y forzaría a usarlo como una autenticación adicional. Por ejemplo, el inicio de sesión le emitirá un SessionID y hará que solo tenga acceso a ciertos archivos HTML.

Soy consciente de que al cambiar mis cookies podría falsificar una solicitud, pero está bien.

¿Cómo haría para hacer esto?

¿Fue útil?

Solución

Algo como esto podría funcionar (no lo he probado):

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

Se supone que agregas " - $ session_id.html " a los nombres de archivo ( $ session_id es el ID de sesión de PHP).

Debería ser seguro, y el beneficio es que los archivos son servidos por el servidor web directamente sin invocar PHP en absoluto.

Otros consejos

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

Por supuesto, el usuario puede crear manualmente dicha cookie en su navegador (hay extensiones que lo hacen para Firefox, y siempre puede editar la tienda de cookies de su navegador).

Puede usar el módulo Apache mod_rewrite para redirigir las solicitudes de .html URL a un script PHP:

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

La ruta y la consulta de URI solicitadas están disponibles en la variable $ _SERVER ['REQUEST_URI'] .

Ponga los archivos en caché fuera de su raíz web, pero aún en un lugar donde PHP pueda acceder a ellos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top