【问题标题】:Apache - set timeout on directory navigationApache - 在目录导航上设置超时
【发布时间】: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


【解决方案1】:

您的会话究竟是如何实现的?如果我们在这里谈论 PHP 会话——这些会话与 Apache 默认功能之间没有“简单”的联系。

在这种情况下,您最好通过 Apache 禁用目录内容列表,并使用 PHP 脚本读取目录内容并将其呈现给用户(通过将 PHP 脚本设置为 DirectoryIndex 文件,或者通过重写脚本的目录请求)——这样,你可以相应地处理你的会话和它的到期。

并且依赖引用者当然根本不是真正的“保护”,因为该值是可选的,并且最容易伪造。

【讨论】:

  • 谢谢!使用 PHP 实现会话控制和导航。实际上,作为一名程序员,我更喜欢这种解决方案。现在我可以完全控制应用层了 :-)
猜你喜欢
  • 2019-02-09
  • 2013-01-02
  • 2011-05-06
  • 2022-01-13
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
相关资源
最近更新 更多