0

我有一个网站,可以向经过身份验证的用户授予对各种形式(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吗?

谢谢

4

2 回答 2

0

如果我将 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 脚本为您执行逻辑。

于 2013-12-22T17:48:19.397 回答
0

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

于 2013-12-22T17:46:58.937 回答