从外部请求隐藏一个PHP脚本

(第一个问题在堆栈交换,随意评论/批评)

上下文

我有一个Debian服务器

  • Flash Media Server(FMS)侦听端口80和1935(这是默认值)
  • Apache2侦听端口8134

仅供参考,FMS的目的是videostream等。 它使用RTMP协议。

据我所知:

当FMS请求在1935被阻塞时,在80上有一个回退。该协议改变并成为HDS,这是基于HTTP的RTMP(较慢,但是起作用)。

FMS需要80端口来做这个回退。

另一方面,Apache提供html,css,…和swf文件,它们是客户端用来连接服务器的flash文件。

从客户端,您可以通过端口80访问这些文件。然后,FMS代理Apache无法处理的HTTP请求。

这样Apache不需要在端口80上configuration,从而避免了80端口冲突。

到目前为止,一切都很好。

但最近,我不得不为FMS添加SQLfunction。 而FMS本身没有内置的SQL连接。 它几乎不能做HTTP请求。 所以你必须在另一个服务器端技术上处理SQL。 由于Apache已经在家,PHP / MySQL就浮出水面了。

所以我安装了PHP和MySQL,并创build了一个网关.php脚本,它作为一个非常简单的数据访问层。

它的工作原理是,FMS可以通过json_encode请求PHP / MySQL生成的JSON数据,由于FMS语言是ActionScript,读取Javascript,我做了(新function(“return”+ src))()和voilà,我的js对象是直的从数据库。

非常简单,避免了构build一个J2EE服务器或带回Zend Framework来讲AMF。

现在出现我的安全问题:

每个人都可以访问.php网关,这意味着任何人都可以使用正确的GET参数来创build.phpurl,并从数据库中读取或混淆。

我想只允许FMS与网关通话。 但我需要客户端仍然能够请求每个其他文件(HTML,CSS,SWF …)。

使用.htaccess规则,有点像这样:

<Files ~ "\yourscript.php$"> Order allow,deny Allow from your.fms.ip.address Deny from all </Files> 

显然,您需要对应用程序进行更改,但这是最简单的方法。

我结束了为网关脚本添加一些基本的authentication

我决定用脚本来调用脚本

 http://localhost/script.php?login=user&password=xyz&action=todo&param=something&... 

如果他知道凭据,每个人都可以访问这个脚本,但是现在设置了一个密码,你必须知道这个密码。 因此,它使得find这个url更复杂一点。 由于这个请求从本地主机运行到服务器上的本地主机,我认为安全性现在是好的,没有人可以“听包”来find它。 也许这不是完美的。 评论欢迎。