如何限制/授权访问PHP脚本?

时间:2010-07-16 05:09:46

标签: php security

我的网站上有这个PHP脚本,我不希望人们只需在浏览器中输入其名称即可运行。

理想情况下,我希望此脚本仅由注册用户运行,并且仅在Windows应用程序中运行(我将不得不提供)。可以这样做吗?

或者,我如何保护此脚本,以便只能从特定页面或脚本调用它?

另外,如何隐藏地址栏上显示的确切URI?

谢谢!

4 个答案:

答案 0 :(得分:4)

如果您为网络服务器运行Apache,则可以使用.htaccess使用用户名/密码组合保护它。如果您的服务器尚未配置为允许.htaccess,则需要一些配置。 Here are the Apache docs

如果您需要基于特定于应用程序的因素进行身份验证,则可以在脚本的顶部添加一些内容,例如

<?php
  if(!$user->isLoggedIn()) {
    // do 404
    header('HTTP/1.0 404 Not Found');
  }

您对如何实施isLoggedIn有疑问吗?

您也可以使用mod_rewrite重写URI,这些指令也可以放在.htaccess内。 mod_rewrite可以透明地重写传入的请求(从浏览器的角度来看),因此/foo/bar的请求可以转换为secret_script.php/foo/barDocs for mod_rewrite

但是,您决定实施此操作,我建议您不要仅仅依赖于您的脚本名称模糊不清以保护您的应用程序的事实。至少,使用.htaccess进行一些每用户身份验证,并考虑让您的应用程序对用户进行身份验证。

答案 1 :(得分:2)

正如Jesse所说,可以将脚本限制为登录用户。关于这个问题已有很多问题。搜索PHP authentication

但是,可以将其限制为单个应用程序。使用像Wireshark这样的程序来查看程序如何登录并发出请求是相当简单的。此时,他们可以手动或在自己的应用程序中重现其行为。

答案 2 :(得分:2)

您可以采用多种不同的方式来保护脚本。所有人都有优点和缺点,而且你的情况的正确答案可能是几个组合。

如上所述,您可以使用Apache锁定帐户...这是一个良好的开端。同样,你可以建立一个强大的“盐化”安全系统,例如:http://www.devarticles.com/c/a/JavaScript/Building-a-CHAP-Login-System-An-ObjectOriented-Approach/如果你也使用SSL,你基本上可以获得银行在其网站上使用的安全性 - 不完美,但肯定不容易闯入。

但也有其他想法需要考虑。将脚本停放在通过直接URI无法访问的类文件中,然后从中间视图脚本调用各种函数。不完美,但它确实限制了某人可以直接访问该文件的方式。考虑通过一个简单的get来为URL添加一个“限定符” - 让脚本检查限定符或者失败....再次,不是一个很好的解决方案,而是一个额外的层来劝阻坏人。如果您可以控制谁可以访问(确切地知道哪些网络),您甚至可以限制允许访问该文件的IP或http引用者。考虑设置和检查cookie,并明确到期。不要忘记设置机器人文件,以便浏览器不会发现您想要保护的脚本。

前段时间我的公司在前端使用Delphi做了会员应用程序,在后端与php和MySql交谈......鉴于我们都是Web应用程序开发人员,它有点笨拙。如果您如此倾向,也许Adobe Flex可能是一种选择。但最终,你必须打开一个应用程序可以与之交谈的大门,如果有人确定了,理论上他们可以通过你的应用程序来查找凭据并使用它们来获得对网站的即时访问。如果您要使用桌面应用程序路径,也许是时候考虑让应用程序避免与中间脚本通信并在本地计算机上执行其工作,并通信远程数据库。

答案 3 :(得分:0)

您可以对.htaccess上的拒绝访问使用带有php身份验证的文件夹,该身份验证将重定向到那些php文件

相关问题