在php文件中存储重要的密钥

时间:2010-02-22 14:34:53

标签: php security

我们正在使用PHP创建一个应用程序,并使用一些需要秘密API密钥的第三方服务。 我们有一个PHP文件,其中包含我们随后导入的所有密钥定义(使用require_once)。

这种方法安全吗?我们应该将钥匙存放在不同的地方吗?

谢谢。

4 个答案:

答案 0 :(得分:13)

今天有人要求

Something similar提供一个shell脚本。答案在这里也是有效的:确保将文件存储在Web根目录之外,或者(如果不可能)使用.htaccess文件保护它。

我还希望unset()使用后包含敏感数据的任何变量,因此即使在该脚本后面的完整变量转储(例如在调试消息中)也不能显示它。

答案 1 :(得分:3)

只要无法从网络访问该文件,它应该是相对安全的。许多网站会将敏感文件放在服务器上的webroot之外,并在需要时将它们包含在应用程序中。

答案 2 :(得分:3)

我总是设置包含敏感数据的证书和其他文件的权限,这样只有我的开发团队和apache服务才能访问该文件。如果您使用的是大型组织(如大学)共享的服务器,这一点非常重要,因为默认情况下很多人可能拥有该文件的权限。我经常看到给每个人的读取权限,以便Web服务器可以访问该文件(因为它既不是文件的所有者也不是组的权限,唯一剩下的就是给“其他”读取。)< / p>

相反,我确保有一个只包含我的开发团队的组,并将该文件的读/写权限设置为该组。然后,我使用ACL为APACHE服务添加读取权限。您必须使用ACL,因为所有者和组通常设置为开发人员和开发团队组,除了使用ACL之外,您无法为apache设置访问权限。

答案 3 :(得分:0)

混淆的安全性:

  1. 使用要编码,解码的函数创建自己的命名空间
  2. php.ini中的 auto_prepend_file 添加到/usr/share/nginx/outsidehtml/keystorage/83738489384828838227.php
  3. 在chroot中运行nginx或apache,selinux
  4. 禁用对keystorage文件夹print_r(glob('/usr/share/nginx/outsidehtml/keystorage/*.*'));
  5. 的列出权限
  6. 添加button.navbar-toggle disable_class = ReflectionFunction disable_function = opcache_get_status,phpinfo,show_source,ini_get
  7. 为了更好地进行加密,您可以将密钥存储在php.ini中作为值,即123key = secret64
  8. <强> TEST

    <nav class="navbar navbar-default navbar-custom navbar-fixed-top no-print">
    <div class="container-fluid">
        <div class="navbar-header page-scroll">
            <button type="button" class="navbar-toggle" data-toggle="collapse"
                    data-target="#bs-example-navbar-collapse-1">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#/">mysite</a>
        </div>
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right">
                <li>
                    <a href="home">Home</a>
                </li>
                <li>
                    <a href="item1">item1</a>
                </li>
                <li>
                    <a href="item2">item2</a>
                </li>
                <li>
                    <a href="item3">item3</a>
                </li>
                <li>
                    <a href="item4">item4</a>
                </li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">item5</a>
                    <ul class="dropdown-menu">
                        <li>
                            <a href="item5.1"><i class="fa fa-search" aria-hidden="true"></i> item5.1</a>
                        </li>
                        <li>
                            <a href="item5.2"><i class="fa fa-th-list" aria-hidden="true"></i> item5.2</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>