【问题标题】:Dispatch-like CGI Approach类似调度的 CGI 方法
【发布时间】:2008-12-18 00:17:37
【问题描述】:

意见:我想禁止在操作系统级别(Linux)通过 Web 直接调用某些脚本,这些脚本具有可从菜单访问的功能。

我希望调用一个 authorize.pl 脚本来检查会话有效性、检查用户权限等。然后它将重定向到目标脚本。

这会绕过权限吗?我是否可以限制对公共目标脚本的执行,但将目标脚本设置为authorize.pl 所属的组可访问?这是否反映了当前的任何做法?

【问题讨论】:

    标签: security redirect permissions operating-system cgi


    【解决方案1】:

    如果您计划重定向到与 authorize.pl 所属组无关的目标脚本,则这些脚本必须可由网络服务器用户执行。

    为什么要在操作系统级别执行此操作?标准做法是使用普通旧的基于会话的授权,在每个脚本中进行检查。

    不要调用 authorize.pl 并重定向到目标,而是创建一个名为 Authorization.pm 的模块并在每个脚本中使用它,首先调用一个验证函数。如果不存在正确的凭据,此函数将重定向到登录页面(或采取其他适当的操作)。

    类似的东西

    use Authorize qw{validate}; #Your module
    use CGI::Session;
    use strict;
    use warnings;
    
    my $sess = new CGI::Session();
    validate($sess->param('user_token'));
    
    #Unreachable code if session is empty or invalid
    
    #Rest of the code ...
    

    【讨论】:

    • (1)我们可以编译授权脚本以提高速度,(2)我们可以批发阻止具有数据库功能的脚本请求以提高安全性。但我看到:当通过授权浏览器向用户打印位置时请求目标脚本。
    【解决方案2】:

    我们在考虑 (1) 我们可以预编译授权脚本以提高速度,(2) 我们可以批发阻止具有数据库功能的脚本请求以提高安全性。但我明白你的意思,必须将权限设置为用户执行,脚本才能与客户端通信:当通过授权客户端浏览器请求目标脚本将位置重定向打印给用户时。

    【讨论】:

    • 整个方法在性能和安全方面都像是过早的优化。您可以从源脚本调用数据库函数,还可以使用网络服务器的安全性来阻止 IP 地址范围或其他条件(Apache mod_security 值得一看)等等
    猜你喜欢
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-13
    • 2011-12-26
    • 1970-01-01
    • 2011-02-28
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多