2013-04-06 138 views
2

大家好,请帮助无知。我高高在上寻找解决办法,但似乎逃避了我。拒绝访问公共php从浏览器,但允许应用程序使用

我最近在我的主机上的公共html文件夹中设置了一个包含全部读取脚本的php文件。 db_config和db_connect以及任何更敏感的文件都很高兴地隐藏起来,因此不可能直接访问。

我需要防止或者至少减慢平均Joe能够在他们的浏览器中运行我的全部读取脚本,显然随着收集这样的数据库所花费的时间,它变得有些有价值,并且会讨厌让某人免费太简单了。

PHP的应该是可访问一个移动应用程序来执行,从而可惜一直留在公共目录(除非你知道,否则?)

能否请您指出我在正确的方向?

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

多达标识爱一个人就这样给我的脚本,哪来的乐趣自己不是学习它:)

感谢您在百忙之中阅读和回复的时间。

回答

0

,我会在这个答案忽略文件模式:

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

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

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

该解决方案也不是完美的,但它可能有点帮助: PHP check whether Incoming Request is JSON type

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

+0

有趣。在这种情况下,除了Json请求之外,是否可以拒绝所有的情况? – mynight 2013-04-06 20:32:40

+0

啊,没有意识到JSON被卷入。我不认为HTACCESS会在这种情况下起作用。尽管我稍微修改了我的答案。查看JSON提示。 – Mike 2013-04-06 20:48:18

+0

对不起,我似乎没有提到原始问题中的JSON,表示歉意。 – mynight 2013-04-06 20:50:45

-1

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

首先,您的应用可以使用查询字符串来请求该页面,例如&verified=1,除非$ _GET变量被传递,否则该脚本将不起作用。像

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

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

+0

确实你是对的。这很有道理。所以除非应用程序发送验证脚本不会执行。通过在应用程序中创建一个秘密目录? – mynight 2013-04-06 20:27:35

+0

所有代码所在的服务器上的秘密目录。第一种解决方案更好,但 – 2013-04-06 20:45:27

相关问题