【发布时间】:2014-07-01 04:41:24
【问题描述】:
用户登录到该站点并具有适当的权限,它允许访问页面policies/editor.php,从这个页面他有一个访问目录的链接:/home/account/app/Ui/policies/gray_list。
好处:应用程序内部管理会话,一旦用户注销或会话超时,用户将被引导到登录页面。
不好的是,如果用户打开了目录的选项卡,即policies/gray_list/,他可以在过期后停留在那里,所以即使用户从站点注销,他仍然可以导航到目录。
如何使会话过期(我假设使用 apache 配置)?所以实际上,我想要的是,一旦会话超时,用户至少会得到forbidden 403 error,就像他现在尝试直接访问这个文件夹而不是从policies/editor.php 访问时一样
我目前的配置:
SetEnvIf Referer "policies/editor.php" editorpage
SetEnvIf Referer "policies/gray_list/" graylistfolder
<Directory "/home/account/app/Ui/policies/gray_list">
Options Indexes FollowSymLinks
IndexIgnore ..
Order Deny,Allow
Deny from all
Allow from env=editorpage
Allow from env=graylistfolder
</Directory>
【问题讨论】:
-
您的会话究竟是如何实现的?如果我们在这里谈论 PHP 会话——这些会话与 Apache 默认功能之间没有“简单”的联系。在这种情况下,您最好通过 Apache 禁用 目录内容列表,并使用 PHP 脚本读取目录内容并将其呈现给用户(通过将 PHP 脚本设置为 DirectoryIndex 文件,或者通过重写脚本的目录请求)——这样,你可以相应地处理你的会话和它的到期。
-
并且依赖引用者当然根本不是真正的“保护”,因为该值是可选的并且最容易伪造……但是您应该已经知道(至少我希望如此)。
-
我完全了解保护风险,目前我可以接受。所以除了保护这个文件夹的缺点之外,我也失去了对会话的控制。谢谢,我想你说得很好。
-
好的,那我补充一下。
标签: php apache http permissions httpd.conf