使用.htaccess保护HTML文件

时间:2009-03-08 16:13:54

标签: php html security .htaccess

我的PHP应用程序使用404文档生成HTML文件,因此对同一HTML文件的多次查询只会导致生成一次。

我想拦截对HTML文件的请求,以便用户需要建立一个PHP会话来提取文件。

在最好的情况下,会在URL中使用SESSION ID并强制它可以用作进一步的身份验证。例如,登录会向您发出SessionID,并且只允许您访问某些HTML文件。

我知道通过更改我的cookie我可以欺骗一个请求,但那没关系。

我将如何做到这一点?

4 个答案:

答案 0 :(得分:3)

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

当然,用户可以在他的浏览器中手动创建这样的cookie(有扩展功能可以在Firefox中使用,并且您可以随时编辑浏览器的cookie存储区。)

答案 1 :(得分:3)

这样的东西可以起作用(我还没有测试过):

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)。

它应该是安全的,并且好处是文件由Web服务器直接提供而根本不调用PHP。

答案 2 :(得分:1)

您可以使用Apache module mod_rewrite.html网址的请求重定向到PHP脚本:

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

然后,$_SERVER['REQUEST_URI']变量中提供了请求的URI路径和查询。

答案 3 :(得分:0)

将缓存文件从您的Web根目录中删除,但仍然可以在PHP可以访问它们的位置。

相关问题