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

拒绝从浏览器访问公共php,但允许应用程序使用,php,security,redirect,browser,header,Php,Security,Redirect,Browser,Header,大家好,请帮助无知的人。我到处寻找解决办法,但它似乎一直在逃避我 我最近在我的主机上的公共html文件夹中设置了一个php文件,其中包含一个read all脚本。db_config和db_connect以及任何更敏感的文件都被隐藏起来,因此无法直接访问 我需要防止或至少减缓普通Joe在他们的浏览器中运行我的read all脚本的速度,显然,随着收集这样一个数据库所花费的时间的增加,它变得有些有价值,并且不愿意让别人太容易地免费使用它 php需要可访问,移动应用程序才能执行,因此不幸的是,它必须保

大家好,请帮助无知的人。我到处寻找解决办法,但它似乎一直在逃避我

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

我需要防止或至少减缓普通Joe在他们的浏览器中运行我的read all脚本的速度,显然,随着收集这样一个数据库所花费的时间的增加,它变得有些有价值,并且不愿意让别人太容易地免费使用它

php需要可访问,移动应用程序才能执行,因此不幸的是,它必须保留在公共目录中(除非您知道其他情况?)

你能给我指一下正确的方向吗

标题重定向似乎是唯一可用的选项。我必须承认,这让我在脚本编写上有些困惑

虽然我很喜欢有人给我剧本,但不亲自学习的乐趣何在:)


感谢您抽出时间阅读和回复。

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

首先,您的应用程序可以使用类似于
&verified=1
的查询字符串请求页面,除非传递$\u GET变量,否则脚本将无法工作。像

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

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

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

这不是最好的解决方案,但一种易于维护的保护文件的方法是使用HTACCESS(如果可以的话)阻止对文件的公共访问。像其他答案中提到的那样使用一个标志也是很好的,也是一种合法的方法,但是HTACCESS将禁止脚本在一开始就运行

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

命令允许,拒绝
全盘否定
Edit:刚刚看到您提到了JSON,所以在本例中忽略上述内容(我不熟悉JSON,但我认为它不起作用)

此解决方案也不是完美的,但它可能会有所帮助:


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

确实如此。这很有道理。因此,除非应用程序发送验证,否则脚本不会执行。通过创建一个秘密目录,你的意思是在应用程序中?所有代码所在的服务器上的一个秘密目录。第一种解决方案更好,请注意,对于大多数用例,这个答案和注释建议并不安全。尤其是使用
GET
参数,该参数非常容易受到攻击,尤其是在没有SSL的情况下。您应该使用会话、某种令牌(例如JWT)或任何其他可靠的身份验证方法。最简单的方法可能是将文件放在
www
public\uhtml
目录(可公开使用的目录,名称取决于您的配置)之上。这很有趣。在哪种情况下,除了Json请求之外,可以拒绝所有请求?啊,我不知道Json涉及其中。我认为HTACCESS在这种情况下不起作用。不过,我对我的答案稍作修改。查看JSON提示。很抱歉,我似乎没有在原始问题“抱歉”中提到JSON。