Php 仅允许某些用户访问某些文件夹/文件

Php 仅允许某些用户访问某些文件夹/文件,php,apache,.htaccess,permissions,web,Php,Apache,.htaccess,Permissions,Web,我有一个Web应用程序,它只向某些用户提供对某些页面的访问。现在这些页面上链接了一些文件。如果有人有URL,每个人都可以访问这些文件(在本例中是搜索引擎)。这应该改变!如何保护这样的目录?我想到了两种可能性: htaccess:每次创建新用户时输入用户名+密码->不适合该类型的项目(还需要第二次登录) download.php?file=xxx:不知道如何在WebApplication(静态页面)的所有链接中包含这样的链接 还有其他的可能性吗 您可以将所有文件存储在一个非公共的目录中,然后编

我有一个Web应用程序,它只向某些用户提供对某些页面的访问。现在这些页面上链接了一些文件。如果有人有URL,每个人都可以访问这些文件(在本例中是搜索引擎)。这应该改变!如何保护这样的目录?我想到了两种可能性:

  • htaccess:每次创建新用户时输入用户名+密码->不适合该类型的项目(还需要第二次登录)
  • download.php?file=xxx:不知道如何在WebApplication(静态页面)的所有链接中包含这样的链接

还有其他的可能性吗

您可以将所有文件存储在一个非公共的目录中,然后编写一个页面(就像您在download.php?file=xxx中所说的那样),检查用户是否有权访问该文件,然后输出到浏览器

编辑:

当您使用CMS时,我假设用户有一个很好的GUI,他们可以单击以选择他们希望插入/链接到的文件?如果是这种情况,您可能会找到它用来创建链接的代码,然后预先添加
http://www.whatever.com/download.php?file=
到文件名,然后通过脚本路由下载。

取自并翻译自(但仅在中提供)

在mod_rewrite的帮助下进行个性化输出 借助函数
wCheckPermissionViewFile
php文件可以个性化。在文件头中执行权限检查以抑制输出就足够了。如果其他文件类型需要个性化(例如ZIP、PDF等),
wPermission.cgi
或自定义php文件可以使用

为了节省编辑器在每个到二进制文件的个性化链接之前编写
wPermission.cgi
的工作,可以使用Apache模块
mod_rewrite
。通过这种方式,可以在执行之前转换每个访问的链接。例如,您可以定义
wPermission.cgi
位于每个Web服务器调用的前面。直接执行也可以在php文件的帮助下重定向(不需要
wPermission.cgi
required)

通过Perl中的检查(
wPermission.cgi
)访问
.htaccess
文件的示例 通过从PHP检查
.htacces
文件的示例(例如download.PHP,见下文) 解释 如果要在不更改链接的情况下对目录
/de/dokumente
中的所有PDF和ZIP文件进行个性化设置,可以将
.htaccess
文件放入该目录。在此文件中定义了重定向规则

规则可以扩展为任意文件扩展名,
NC
表示不区分大小写。请注意,这些规则也会继承到子目录中

二进制文件本身必须签入并提供相应的个性化设置

如果要检查文件是否在有效的发布时间段内(例如在线或离线),请在通过PHP API
wIsOnline
进行权限检查之前进行检查

示例:通过php检查下载“
.htacces
文件”实现的.php(例如download.php)


对于较新版本的
webapplication
可能会有所帮助。它是德语的,因为制造商的主要语言是德语。

您能否详细说明一下“不知道如何在Web应用程序的所有链接中包含这样的链接”,以便我尝试更详细的回答。Web应用程序是由静态页面构建的。但由于它是一个CMS,用户可以编辑内容,但它仍然是一个静态页面。因此,我不知道如何为现有页面和用户未来内容的所有下载链接添加download.php。我想问题中已经提到了download.php,TS正在寻找替代方法。我不确定,所以还是发布了它。我也请他详细说明一下。没问题,这甚至可以为TS澄清一些事情,只是想让你知道我是如何理解这个问题的。@Chief17:谢谢你的回答。我回答了你的问题。如前所述,我在CMS中集成download.php时遇到问题…@hakre:为什么删除了你的答案?我认为它仍然有用(只是对我的情况没有帮助)。那个页面已经不存在了。它直接重定向到一个启动页-它也是非英语的。谢谢你的信息。这是我的一篇老文章,我没有意识到只有链接的答案有多糟糕。我使用的CMS主要语言是德语,制造商的主要语言也是德语,但我认为代码本身并不真正对语言敏感。我更新了我的答案,并附上了一份翻译。太好了,谢谢:-)干杯,不客气。
#Alle Dateien mit angegebener Endung über wPermission.cgi aufrufen.
RewriteEngine on
RewriteCond %{REQUEST_URI} .pdf$ [NC,OR]
RewriteCond %{REQUEST_URI} .doc$ [NC,OR]
RewriteCond %{REQUEST_URI} .xls$ [NC,OR]
RewriteCond %{REQUEST_URI} .ppt$ [NC,OR]
RewriteCond %{REQUEST_URI} .pps$ [NC,OR]
RewriteCond %{REQUEST_URI} .zip$ [NC,OR]
RewriteCond %{REQUEST_URI} .jpg$ [NC,OR]
RewriteCond %{REQUEST_URI} .jpeg$ [NC,OR]
RewriteCond %{REQUEST_URI} .png$ [NC,OR]
RewriteCond %{REQUEST_URI} .gif$ [NC]
RewriteRule (.*) /cgi-bin/wPermission.cgi?file=/de/dokumente/$1
#Alle Dateien mit angegebener Endung über die angegebene PHP-Datei aufrufen.
RewriteEngine on
RewriteCond %{REQUEST_URI} .pdf$ [NC,OR]
RewriteCond %{REQUEST_URI} .doc$ [NC,OR]
RewriteCond %{REQUEST_URI} .xls$ [NC,OR]
RewriteCond %{REQUEST_URI} .ppt$ [NC,OR]
RewriteCond %{REQUEST_URI} .pps$ [NC,OR]
RewriteCond %{REQUEST_URI} .zip$ [NC,OR]
RewriteCond %{REQUEST_URI} .jpg$ [NC,OR]
RewriteCond %{REQUEST_URI} .jpeg$ [NC,OR]
RewriteCond %{REQUEST_URI} .png$ [NC,OR]
RewriteCond %{REQUEST_URI} .gif$ [NC]
RewriteRule (.*) /de/download.php?path=/de/dokumente/$1