【问题标题】:Securing access to Java-Script files保护对 JavaScript 文件的访问
【发布时间】:2014-01-10 23:56:29
【问题描述】:

我有一个网站,向经过身份验证的用户授予对各种形式(PDF、MP3、MP4 等)内容的访问权限。该网站是由 LAMP 上的第 3 方开发人员为我开发的。用户使用存储在 MySQL 数据库中的用户名/密码向应用程序进行身份验证。它们不使用 Apache、MySQL 或任何其他机制进行身份验证。

最近,对该网站的渗透测试发现了一些明显的漏洞。让我摸不着头脑的是下载javascript文件的身份验证要求。显然浏览器需要访问这些 JS 内容才能使应用程序运行,这意味着至少公开一些文件。

我的问题是:有没有办法阻止尚未登录应用程序的用户访问某些文件?

我已经看到为内容文件建议的.htaccess 版本之类的解决方案。 例如

      Options +FollowSymLinks  
      RewriteEngine on  
      RewriteRule ^(.*)$ ../authorize.php?file=$1 [NC]

如果我将 JS 代码拆分为公共/私有文件夹,有没有办法以这种方式提供 java-script,而不仅仅是批发?这适用于 javascript 吗?

谢谢

【问题讨论】:

    标签: javascript php download lamp authorize


    【解决方案1】:

    如果我将 JS 代码拆分为公共/私有文件夹,有没有办法以这种方式提供 java-script,而不仅仅是批发?这适用于 javascript 吗?

    authorize.php,伪代码,检查登录状态和文件是否存在,为登录用户返回私有而不是公共

    if $_SESSION['logged in'] && exists '/private/' . $_GET['file']
        print '/private/' . $_GET['file']
    else if exists '/public/' . $_GET['file']
        print '/private/' . $_GET['file']
    else
        die
    

    然后,您将其与您的示例 .htaccess 结合起来,并像正常的 .js 文件一样包含文件,让 Apache 将这些链接转换为正确的 php 行,以便您的 php 脚本为您执行逻辑。

    【讨论】:

    • 谢谢。我接受了它并对其进行了一些修改,它很有魅力。我没有使用 .htaccess 文件,但在 apache site.conf/ 中包含了重定向。检查用户是否已登录。如果没有,请停在那里。 code if(!(isset($_SESSION['user_id']) && $_SESSION['user_id']!='' )) die("您无权访问此资源。"); #从路径中去除前导'/',然后检查它是否存在 $relative_path = substr($_SERVER['REQUEST_URI'],1); if (file_exists ($relative_path)) readfile( './private' . $_SERVER['REQUEST_URI']); else die("找不到文件。" . $relative_path);
    【解决方案2】:

    听起来您只需要一个单独的身份验证路径......登录路径。此路径将只允许下载公共资产。成功的身份验证会将用户重定向到您的安全路径。注销操作将用户重定向到登录路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-05
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多