2013-12-22 26 views
0

我有一个网站,授予对各种形式(PDF,MP3,MP4等)内容的访问权限给已验证的用户。该网站由LAMP上的第三方开发者为我开发。用户使用存储在MySQL DB中的用户名/密码对应用程序进行认证。他们不会使用Apache,MySQL或任何其他机制进行身份验证。保护对Java脚本文件的访问

最近,该网站的渗透测试发现了一些明显的漏洞。那个让我挠头的是需要认证才能下载javascript文件。很显然,浏览器需要访问这个JS内容才能使应用程序运行,这意味着公开至少暴露了一些文件。

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

我见过像内容文件建议的.htaccess版本的解决方案。 例如

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

如果我分手了JS代码到公共/私人文件夹有没有办法来服务了Java的脚本,我这种方式,而不是仅仅包括其批发?这将工作的JavaScript?

谢谢

回答

0

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

0

如果我把JS代码拆分成公共/私人文件夹,有没有办法以这种方式提供java脚本,而不仅仅是把它包括进去呢?这将工作的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脚本做你的逻辑。

+0

谢谢。我拿了一下,稍微修改了一下,它很有魅力。我没有使用.htaccess文件,但在apache site.conf/Check用户登录时包含了重定向。如果没有,请在此停止。如果(!(isset($ _ SESSION ['user_id'])&& $ _SESSION ['user_id']!='')) die(“您无权访问此资源。 #strip从路径中领先'/',然后检查它是否存在 $ relative_path = substr($ _ SERVER ['REQUEST_URI'],1); if(file_exists($ relative_path)) readfile('./private'。$ _SERVER ['REQUEST_URI']); else die(“File not found。”。$ relative_path); – user3127522