用户登录该网站,并且拥有适当的权限,允许访问网页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>
答案 0 :(得分:0)
您的会话究竟是如何实施的?如果我们在这里讨论PHP会话 - 那些与Apache默认功能之间没有“简单”连接。
在这种情况下,您最好通过Apache禁用目录内容列表,并使用PHP脚本读取目录内容并将其呈现给用户(通过将PHP脚本设为DirectoryIndex
文件,或通过重写目录请求到脚本) - 这样,你可以相应地处理你的会话resp到期。
依靠引用者当然不是真正的“保护”,因为这个值是可选的,也是最容易伪造的。