拒绝从浏览器访问公共php,但允许应用程序使用


Deny access to public php from browser but allow application use

大家好,请帮助无知的人。我到处寻找解决办法,但似乎就是找不到。

我最近在我的主机上的公共html文件夹中设置了一个php文件,其中包含一个read all脚本。db_config和db_connect以及任何更敏感的文件都被隐藏起来,因此直接访问是不可能的。

我需要防止或至少减慢平均Joe能够在他们的浏览器中运行我的read all脚本,显然,收集这样一个数据库所花费的时间已经变得有些有价值,我讨厌让别人太容易免费获得它。

php需要可访问的移动应用程序来执行,所以不幸的是必须留在公共目录(除非你知道吗?)

你能给我指个正确的方向吗?

头重定向似乎是唯一可用的选择。我必须承认这让我在编写脚本时有些困惑。

尽管我很喜欢有人给我剧本,但不用自己学习的乐趣在哪里呢:)

感谢您花时间阅读和回复。

在这个答案中我将忽略CHMOD:

这不是最好的解决方案,但是一种易于维护的保护文件的方法是使用HTACCESS阻止公众访问它(如果可以的话)。使用其他答案提到的标志也很好,也是一种合法的方法,但是HTACCESS会首先禁止脚本运行。

<files myfile.php>
order allow,deny
deny from all
</files>

编辑:刚才看到你提到JSON,所以忽略上面的情况下(我不熟悉JSON,但我不认为它会工作)。

这个解决方案也不是完美的,但它可以帮助一点:PHP检查Incoming Request是否为JSON类型

您可以检测传入的请求是否来自JSON,然后忽略它,如果它不是。

据我所知,你的应用程序需要使用它,但不是网络上的任何人,对吗?你可以做一些事情。

首先,你的应用程序可以用一个像&verified=1这样的查询字符串请求页面,除非传递$_GET变量,否则脚本将无法工作。像

if(isset($_GET['verified'])){ 
//show code
}
else
{
//not today average joe
}

你也可以把它放在一个秘密目录,比如"sjdvjhb_kdfjgvkedn"