如果用户未登录,我正在尝试阻止查看javascript页面(.js), 我想从index.php页面写一个404或403标题,怎么做呢? 注意:我不想使用chmod,因为它全局更改文件权限而不是访问者
header("HTTP/1.0 404 Not Found", "js.js");
js.js是一个假参数,只是我想要它的样本或类似的东西,
答案 0 :(得分:2)
您需要一个单独的脚本。 如
file.php
$file = $_GET['file'];
//whitelist files
$filelist = array('js.js');
if(in_array($file, $filelist))
{
header('Cache Control: No-store');
header('Content-Disposition:inline;filename="' . $file . '"');
include "../files/$file";
}
使用它
<script src="files.php?file=js.js"></script>
并将您的文件放在非Web可访问的位置
答案 1 :(得分:0)
除了使用单独的php脚本发出* .js之外,没有安全的方法可以做到这一点。在此脚本中,您将检查用户的cookie /会话数据,然后readfile()您要保护的js。
这是一种真正的hacky方式......为什么你需要它?
答案 2 :(得分:0)
人们已经建议你如何做到这一点。这是一个实用的解决方案。
如前所述,您编写了一个脚本来执行会话检查,并使用header()调用重定向到您想要的任何错误处理解决方案。
我不主张你调用脚本js.js.php。通常,由于apache的内在问题,您不希望允许带有somename.somename.ext的文件。
相反,只需将脚本命名为js.js.但是,js.js的源代码应该是执行会话检查的php代码,如果可以的话,返回带有相应mime类型头的javascript源代码。
然后在您的htaccess目录中添加自定义文件规则:
<Files js.js>
SetHandler application/x-httpd-php
</Files>
然后,Apache会将js.js视为一个php文件,即使此功能不可见。
答案 3 :(得分:0)
这不能回答这个问题,但如果用户没有必要的权限,可以做的只是不要求JS脚本。你要做的是过度杀伤而没有附加价值。
<?php if ($isUserLoggedIn): ?>
<script src="js.js" type="text/javascript"></script>
<?php endif; ?>
答案 4 :(得分:-1)
您可以创建自己的404页面,并在您想要的文件部分中使用include功能。