如何保护php文件

时间:2015-01-06 17:44:54

标签: php

我在现有网站上进行了支付网关集成。支付网关给了我一个API,我用它并编码并将其存储在php文件中pay.php

我在主网站上有一个结帐表单,点击提交后,它会通过pay.php将所有需要的数据发送到post,然后此文件会完成剩下的工作并将数据发送到付款网关。

由于这个pay.php文件存储了感知数据,因此我想保护它,以便其他任何人都无法通过网络brwoser访问它,例如输入http://domain.com/pay.php或者能够下载它。

现在我知道通常你不能只下载.php个文件,我前几天看到一个网站能够下载我的wordpress博客和.php个文件。

每次运行pay.php文件时都会生成付款链接,因此我需要确保只有网站http://www.domain.com能够使用此文件而不能使用第三方。

我脑子里已经有了一些想法,比如使用远程IP等来限制访问,但是想知道解决问题的最佳方法。

3 个答案:

答案 0 :(得分:2)

添加Commusoft的答案,并提供一个轻微的替代方案。

这段.htaccess通过浏览器拒绝php文件请求,并确保你只能包含来自不同php文件的文件。

<Files *.php>
Deny from All
</Files>

将其放在pay.php所在的单独目录中。

我认为处理此付款问题的最佳方法是将pay.php转换为完整的类并使用面向对象。这样,您就可以在任何位置使用该功能并轻松地将变量传递给它。

答案 1 :(得分:1)

  1. 您可以在此文件中仅执行POST请求(您还必须验证POST请求)。 GET请求将不返回任何内容或错误。
  2. 通常你不能轻松下载php文件。网站的安全性应该有一些漏洞来做到这一点。
  3. 您可以将所有请求定向到一个php文件中。通常它是index.php。尝试了解如何通过.htaccess配置它。并且用户不会知道您的真实PHP文件。
  4. 如果需要,您可以通过权限保护您的文件。

答案 2 :(得分:0)

  • 如果您正确配置了您的网络服务器(Apache,...),网络服务器将呈现 PHP,因此没有人有机会查看该文件的源代码即可。所以有一些固有保护。但不用说,它可以被黑客攻击

  • 现在黑客当然希望破解网站。并且对将要发布的数据有任何控制:这取决于浏览器。黑客有时会在发送请求之前修改内容,希望PHP脚本以某种方式失败并显示例如SQL查询等。首先,你最好做的是关闭错误报告

    error_reporting(0);
    

    由于黑客可以找到一些警告/错误,最有助于找出基础算法并破坏它。通过在PHP文件中显式执行此操作,可以防止在修改服务器设置时再次出现错误。

  • 您还可以更好地确保用户无论如何都无法直接访问敏感数据。这可以通过将敏感数据放入单独的文件(例如secure.php)和include_once()来实现,这样您就可以读取它的数据。

  • 正如@Havenard和@AlexHowansky所说,您还可以将这些文件(secure.php)更好地存储在公共可访问目录之外 。例如,public_html以上。这并不总能完全解决问题,因为某些Web服务器对 URL-injection 敏感(通过指定http://www.domain.com/../securefolder/secure.php,您有时可以访问公共目录上方的文件)。

  • 正如@TomKriek所说,您还可以通过插入包含以下行的.htaccess文件为“安全文件夹”提供附加保护:

    <Files *.php>
    Deny from All
    </Files>
    

    这意味着,如果配置正确,网络服务器将阻止用户访问目录中的所有.php个文件。

  • 最后,您最好提供文件适当的权限:如果PHP引擎作为与文件所有者相同的用户运行,则可以为其提供600 访问权限chmod 600 secure.php)或640,以防PHP引擎在与文件所有者不同的用户上运行,但在同一用户组或最坏情况644 1}}以便黑客无法修改文件(或至少不应该)。您还可以通过运行www-data将文件的所有者更改为chown www-data secure.php,以便所有者是网络服务器,因此您可以更加严格地使用权限。经验法则始终是为其提供正确执行其工作的最低访问权限

  • 通过将文件权限设置为400440或最差情况{{1},您也可以将文件设置为只读 }。在这种情况下,至少黑客不能作为付款的接收者进入他/她自己的银行账户;)。

总而言之,在设计/实现安全服务器时,最好使用分层方法,其中采取了多项措施,以便如果一项措施可能失败,其他人希望仍然会阻止黑客访问服务器/文件。