我应该在哪里放置包含smtp凭据的php文件?

时间:2014-07-15 20:07:54

标签: php security email credentials

我已经四处搜索了这个答案,并找到了一些"解决方案"但我不认为我完全理解如何实现这一目标。我刚刚完成了一个查询移动网站,它有11个不同的PHP文件用于邮件表单提交。这是我的第一个移动"网站",我最初并不太关心安全性,更多的功能。好吧,现在一切都运转正常,我需要担心锁定它。这11个PHP文件与我的所有HTML文件位于同一目录中,它们包含用于提交电子邮件的SMTP信用。我发现的一些解决方案说要将这些文件放在webroot之外,但我如何在表单操作中引用它们?这是否意味着我应该在根目录下创建一个子文件夹并将它们放在那里并引用它们而不是

<form method="post" action="bp-mail.php" enctype="multipart/form-data" data-ajax="false">

但现在喜欢

<form method="post" action="/scripts/bp-mail.php" enctype="multipart/form-data" data-ajax="false">

...或者他们是否需要位于&#34;以上&#34;网络服务器中的根?如果一个子文件夹应该去哪里,我应该在目录上放置什么类型的权限以允许html页面仍然调用它们,但是不允许有某些网站翻录软件的人抓住它们?如果在根之上,那么路径语法应该如何形成代码?

1 个答案:

答案 0 :(得分:1)

有两种类型的文件。直接与之交互的人(您在URL中加载它们,它们在服务器上运行,然后它们向您显示响应),以及您从其他文件中包含的那些。

从外观上看,bp-mail.php是您直接与之互动的文件。

此文件不应包含您的凭据。

如果 - 由于一些疯狂的原因 - Apache停止将该文件解析为PHP并且默认为普通文本(发生在Facebook上一次),那么人们就会看到你的密码。

不酷。

将该文件放在Web路由之外,并使用$config = require(dirname(__DIR__).'/config.php');或类似的简单文件来包含该文件,然后只引用该文件中的变量。

该配置文件可能如下所示:

<?php 

return [
    'smtp' => [
        'username' => '',
        'password' => '',
    ],
];

然后在bp-mail.php中,你可以使用$config['smtp']['username'];,如果有人以纯文本的形式看到,那么谁在乎呢。