Perl CGI ::会话权限问题

时间:2016-11-02 17:44:48

标签: perl session cgi

我有一个在Perl cgi文件中运行的网站。当用户登录时,使用Perl CGI :: Session创建一个新会话。

问题来自访问位于不同用户目录下的两个重复的网站。例如,www.abc.edu /〜AAA / project / and www.abc.edu/~BBB/project /

这些是同一台机器上的完全相同的网站,因此它们共享相同的/ tmp目录。

当我登录AAA的网站(~AAA / project / *)时,它会在我的网站上创建一个会话cookie 计算机,其域名为abc.edu。然后它创建会话 / tmp目录中的信息由'AAA'拥有,因为该脚本的所有者应该是'AAA'。

然后,如果我访问BBB的网站(~BBB / project / *),它会尝试使用会话信息 存储在我的计算机上,因为域名是相同的。然而, 存储在/ tmp中的会话信息由'AAA'拥有,它无法读取或写入会话信息。

[edit]这就像A / B测试网站,我同意他们不应该分享会话信息。

我认为在这种情况下,存储在/ tmp中的会话信息应该是可读写的,以解决问题。

[edit]我意识到@simbabque指出的安全问题,而且我发现会话cookie的-path参数可以用来区分这两组用户。所以现在我的问题是如果我确实想在这两个网站之间使用通用的身份验证系统,如何在不引起安全问题的情况下共享会话信息呢?在这个A / B测试和共享认证系统中,典型的处理方式是什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我打算用一个示例应用程序写一个很长的答案,但在重新阅读你的评论和问题后,我认为答案很简单:

如果您打算使用一种登录机制,并且该网站的用户知道这一点,那么就没有安全问题。它一直都在做。今天的许多系统都只由一个程序组成,构成一个应用程序,他们需要这样做。

如果临时目录中文件的所有权存在问题,因为应用程序作为不同的系统用户运行,那么就不要将文件用作会话存储。例如,使用数据库或键/值存储。

或者您可以将两个用户放在同一个组中,并使文件组可读写。这里有很多解决方案。