Php 一次登录的网站

Php 一次登录的网站,php,mysql,security,login,Php,Mysql,Security,Login,如果我创建一个只有一个登录名(管理员)的网站,那么将用户名和密码作为变量存储在文档中,而不是将其存储在mysql表中,是否会更安全(我觉得更容易) 如果我只是把它存储为一个变量,我就不必对它进行加密了,是吗 无论发生什么,我都会进行一次会话。源代码中硬编码的密码只对有权访问源代码的人可用。所以是的,它倾向于较少的利用 此外,由于只有一个管理员密码,因此将其存储在其他地方本身就是一种过度使用 然而,腌制/加密是另一回事。如果有其他不太信任的人有权访问源代码(或者由于系统的其他安全漏洞,应该对源代码

如果我创建一个只有一个登录名(管理员)的网站,那么将用户名和密码作为变量存储在文档中,而不是将其存储在mysql表中,是否会更安全(我觉得更容易)

如果我只是把它存储为一个变量,我就不必对它进行加密了,是吗


无论发生什么,我都会进行一次会话。

源代码中硬编码的密码只对有权访问源代码的人可用。所以是的,它倾向于较少的利用

此外,由于只有一个管理员密码,因此将其存储在其他地方本身就是一种过度使用


然而,腌制/加密是另一回事。如果有其他不太信任的人有权访问源代码(或者由于系统的其他安全漏洞,应该对源代码进行压缩),您可以将其加密存储在变量中。

不要在PHP代码中直接存储密码。原因如下:

假设您正在服务器上安装APAche+PHP,它可能如下所示:

  • 安装Apache
  • 哦…完成了-所以我将把我的php代码放到htdocs中
  • 安装PHP
在第2步之后,每个使用Apache的人都可以阅读php源代码,因为它还不能传递给php进行解析

如果您的PHP/apache安装出现故障,同样的情况也可能发生——您向所有人显示您的代码(带有密码)

更有趣的是,对站点的请求可能会缓存在某个代理中,即使您以后使apache+php正常工作,您的源代码和密码仍然存在

如果您不想在文件中使用数据库存储密码(但使用DB),该文件将位于htdocs目录(或/var/html/www)之外,因此apache无法直接访问该文件

至于存储密码本身——存储它的散列,并且在验证谁提供的散列和您拥有的散列的比较时——不需要以文字形式存储密码

更新:: 至于在PHP代码中存储用于DB访问的username+pass,没关系。只需在DB站点上为该用户分配适当的权限,这样该特定用户就可以仅从您的站点访问适当的资源(最好是只读的)。这样无论谁得到这些,对他来说都是无用的。这一切都取决于具体情况……因此,请将其视为粗略的提示或您应该注意的事项列表

更新#2-最好阅读以下内容:

我不会删除我上面写的内容,但我承认它写得很笨拙,写得很快,而且我没有把我的意图表达得太清楚。 她是你真正能做的,对你来说也很好。假设您有index.php文件,可以在其中正常执行所有操作—验证用户权限、访问数据库。所以你想把所有这些信息都保存在这个文件里。由于上述问题,未经授权的人员有时可能会看到它

这样做(快速且有效):

  • 在“index.php”所在的目录中创建“private”子目录
  • 在“private”中放入2个文件“.htaccess”和“secret.php”:
index.php

<?php    
    require_once('./private/secret.php'); // defines ADMIN_HASH, DB_USER, DB_PASS
    // here you can use ADMIN_HASH, DB_USER, DB_PASS and
    // even if someone gains access to the source code from
    // this file (via HTTP) no one will see your priv data
?>
<?php
    // define here any private data that you wish
    // file will be included from others but never allowed to be seen due to rewrite rule from .htaccess
    define('ADMIN_HASH', 'your admin password\'s hash - for example md5');
    define('DB_USER', 'user used to access db');
    define('DB_PASS', 'password for above user');
?>
private/secret.php

<?php    
    require_once('./private/secret.php'); // defines ADMIN_HASH, DB_USER, DB_PASS
    // here you can use ADMIN_HASH, DB_USER, DB_PASS and
    // even if someone gains access to the source code from
    // this file (via HTTP) no one will see your priv data
?>
<?php
    // define here any private data that you wish
    // file will be included from others but never allowed to be seen due to rewrite rule from .htaccess
    define('ADMIN_HASH', 'your admin password\'s hash - for example md5');
    define('DB_USER', 'user used to access db');
    define('DB_PASS', 'password for above user');
?>


当然,mod_rewrite必须在Apache上运行。上面的代码阻止您将私有数据直接保存在代码中,如果PHP不工作,这些数据可能是可见的。同时,即使PHP不起作用(代码不可解析),仍然没有人可以使用http访问您的“private/secret.PHP”文件。

请花点时间,进行适当的加密,并将用户名和密码保存到数据库中。现在不要偷懒:)这样会更安全,工作也会完成,因此,如果您以后想添加其他用户,您可以这样做,而不必重新编写整个应用程序。当然,这一切都取决于您的应用程序要求,如果这是一个仅由您自己使用的简单应用程序,用于跟踪您上厕所的次数,请继续,将密码保存在未加密的文件中,我们关心什么:)@user65439与在变量中加密相比,在数据库中如何更安全?单独使用数据库存储的安全优势是什么?为什么不直接使用.htpasswd或限制为IP@geomagas我相信阿图尔已经回答了你下面的问题。@user65439他现在回答了吗?那么我应该把DB的通行证存放在哪里?