2014-04-10 85 views
0

我目前正在开发一组PHP脚本,充当专用API,仅供某些授权机器使用。 脚本直接与MySQL数据库接口,所以我必须确保没有公共的未经授权的访问(如使脚本成功运行)是可能的。保护PHP脚本免受未经授权的访问

我一直在考虑不同的选择,但我决定来这里的一些不同的意见。

我在用nginx运行。

API由C#程序(使用WebClient)和其他一些服务器(可能会更改IP)在外部使用,所以我避免了基于IP的方法。

我正在考虑通过“钥匙”参数通过后,检查是否有匹配

if($_POST['key'] == 'key') 

可能有更好的替代品,你做什么觉得?

+2

HTTP Basic Auth在语义上比'key' POST参数更正确。还可以使用HTTPS来防止MITM攻击。最后,如果恶意方可以访问C#应用程序,则所有投注都将关闭,因为秘密可以简单地进行反向设计。 – univerio

回答

0

我通常使用你写的关键方法,但我绝对相信深度防御方法。所以我会添加一些服务器级保护,检查nginx访问控制方法。也许是这样的:

否认:所有 允许IP:127.0.0.1

+0

http://www.cyberciti.biz/faq/linux-unix-nginx-access-control-howto/ – morissette

+0

'拒绝:所有允许IP:127.0.0.1' ---我会关闭整个服务器。 – zerkms

+0

毫无疑问,您会将任何IP访问服务器的IP列入白名单。你甚至可以指定特定的文件w/nginx来应用这些规则。 – morissette

0

我会使用一个公共/私有密钥认证或使用用户名和密码/ API密钥为每个客户端。只有其他选项IMO会使用LDAP或其他目录认证,这在大多数情况下可能不理想。

相关问题