Perl CGI::Session 权限问题
Perl CGI::Session permission issues
我有一个在 Perl cgi 文件中运行的网站。当用户登录时,它使用 Perl CGI::Session 创建一个新会话。
问题来自访问位于不同用户目录下的两个重复网站。例如,www.abc.edu/~AAA/project/ 和 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 测试和共享认证系统中处理的典型方法是什么?感谢您的帮助。
我本来打算用一个示例应用程序写一个长答案,但在重新阅读您的评论和问题后,我认为答案很简单:
如果您打算使用一种登录机制并且站点的用户知道这一点,那么就没有安全问题。它一直在进行。今天的许多系统都由不止一个程序组成一个应用程序,他们需要这样做。
如果临时目录中文件的所有权是一个问题,因为应用程序 运行 作为不同的系统用户,那么就不要将文件用作会话存储。例如,使用数据库或 key/value-store。
或者您可以将两个用户放在同一个组中,并使文件组可读可写。这里有很多解决方案。
我有一个在 Perl cgi 文件中运行的网站。当用户登录时,它使用 Perl CGI::Session 创建一个新会话。
问题来自访问位于不同用户目录下的两个重复网站。例如,www.abc.edu/~AAA/project/ 和 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 测试和共享认证系统中处理的典型方法是什么?感谢您的帮助。
我本来打算用一个示例应用程序写一个长答案,但在重新阅读您的评论和问题后,我认为答案很简单:
如果您打算使用一种登录机制并且站点的用户知道这一点,那么就没有安全问题。它一直在进行。今天的许多系统都由不止一个程序组成一个应用程序,他们需要这样做。
如果临时目录中文件的所有权是一个问题,因为应用程序 运行 作为不同的系统用户,那么就不要将文件用作会话存储。例如,使用数据库或 key/value-store。
或者您可以将两个用户放在同一个组中,并使文件组可读可写。这里有很多解决方案。