1

我已经在网上寻找答案,但似乎没有一个与我想要达到的目标相似。因此,我希望stackoverflow的专家可以帮助我。

我想要完成什么? 我想限制非授权用户对内容的访问。非授权用户可访问的内容将在白名单中指定。所有其他内容都被列入黑名单。

我的环境是什么? 我将 Apache 与一种与 PHP 非常相似的脚本语言一起运行。脚本语言不会被很多人知道,但它是 Fazzt(如果你知道并且能够推断出它与 PHP 相比的差异......没有指针/内存管理、十进制值和二进制数据) . 由于项目的性质,我必须使用这个环境。

网站上发生了什么? 该站点对用户进行身份验证并将身份验证存储在会话中。未经身份验证的用户会看到一个样式化的(包含图像、css、js 等)网页。因此,我需要将所有静态图像、css、js 文件列入白名单,以便客户端浏览器可以下载它们。登录后,会显示更广泛的动态内容(因此,任何未列入白名单的内容都会自动列入黑名单)。

我打算如何解决这个问题? 这很愚蠢,但我想并不总是很明显。我的方法涉及 mod_rewriting 对与 .fzt 和 .fsp 页面不匹配的现有文件的所有请求。重写将转到一个脚本文件,该文件将根据白名单检查请求的文件。如果该文件存在于列表中,则请求将直接路由到该文件(是的,我很傻……它会再次被 mod_rewritten >_< )。如果它不在列表中,将检查用户的身份验证。如果用户未通过身份验证,则会返回“未找到文件”HTTP。否则,请求将被重定向到文件并提供服务(同样愚蠢)。

如您所见,这种方法存在很大缺陷。但是,我确信某些性质的东西应该是可能的……但是,我还没有找到任何证据。你怎么看?mod_rewrite / script 是执行此任务的完全错误的方式吗?否则你会怎么做?请注意,我不能简单地将 .htaccess 作为由 Fazzt 跟踪的用户身份验证确定的访问权限(阅读上文,类似于 PHP 的脚本语言)。

任何建议或想法将不胜感激!

4

0 回答 0