使用 php 密码保护没有数据库访问权限的页面

发布于 2024-09-12 13:52:27 字数 291 浏览 3 评论 0原文

是否可以在没有数据库访问权限的情况下对页面进行密码保护?我可能只有几页。但我应该能够更改密码并保存会话等。而且我想要一种安全的方式,因为它适用于生产站点!

md5 之后如何存储在 config.php 中:

 <?php
 username="admin"; 
 password="1a1dc91c907325c69271ddf0c944bc72";
 ?>

如果这是一个好主意,有没有一种方法可以限制仅从一个脚本访问此 php 称为 check.php 或其他什么?

Is it possible to password protect a page without db access? I may have only few pages. But I should be able to change password and also save sessions etc. And I want a secure way as it's for production site!

How is it to store in a config.php after md5:

 <?php
 username="admin"; 
 password="1a1dc91c907325c69271ddf0c944bc72";
 ?>

If this is a good idea, is there a way to restrict access to this php from only one script
called check.php or something?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

深陷 2024-09-19 13:52:27

当然可以,为什么不呢?您可以在无法访问的目录(受 .htaccess 保护或位于 www 根目录之外)中使用平面文件,并将其用作数据库。

这是我创建的一个简单的登录类:

class SimpleLogin {

    private $users;
    private $db = './pass.txt';

    function __construct() {
        $data = file_get_contents($this->db);

        if (!$data) {
           die('Can\'t open db');
        } else {
            $this->users = unserialize($data);
        }
    }

    function save() {
        if (file_put_contents($this->db, serialize($this->users)) === false)
            die('Couldn\'t save data');
    }

    function authenticate($user, $password) {
        return $this->users[$user] == $this->hash($password);
    }

    function addUser($user, $password) {
        $this->users[$user] = $this->hash($password);
        $this->save();
    }

    function removeUser($user) {
        unset($this->users[$user]);
        $this->save();
    }

    function userExists($user) {
        return array_key_exists($user, $this->users);
    }

    function userList() {
        return array_keys($this->users);
    }

    // you can change the hash function and salt here
    function hash($password) {
        $salt = 'jafo2ijr02jfsau02!)U(jf';
        return sha1($password . $salt);
    }

}

注意:如果您要在实际服务器中使用它,您确实应该关闭错误报告。这可以通过调用 error_reporting() 或添加 '@ 来完成' 在 file_get_contentsfile_put_contents 前面(即:因此它变成 @file_get_contents

使用示例http://left4churr.com/login/

Sure, why not? You can use flat files in inaccessible directory (protected by .htaccess or out of the www root) and use that as a database.

Here's a simple login class I've whipped up:

class SimpleLogin {

    private $users;
    private $db = './pass.txt';

    function __construct() {
        $data = file_get_contents($this->db);

        if (!$data) {
           die('Can\'t open db');
        } else {
            $this->users = unserialize($data);
        }
    }

    function save() {
        if (file_put_contents($this->db, serialize($this->users)) === false)
            die('Couldn\'t save data');
    }

    function authenticate($user, $password) {
        return $this->users[$user] == $this->hash($password);
    }

    function addUser($user, $password) {
        $this->users[$user] = $this->hash($password);
        $this->save();
    }

    function removeUser($user) {
        unset($this->users[$user]);
        $this->save();
    }

    function userExists($user) {
        return array_key_exists($user, $this->users);
    }

    function userList() {
        return array_keys($this->users);
    }

    // you can change the hash function and salt here
    function hash($password) {
        $salt = 'jafo2ijr02jfsau02!)U(jf';
        return sha1($password . $salt);
    }

}

NOTE: You really should turn off error reporting if you are going to use this in an actual server. This can be done by calling error_reporting() or by adding '@' in front of file_get_contents and file_put_contents (ie: so it turns into @file_get_contents)

Usage example: http://left4churr.com/login/

情深如许 2024-09-19 13:52:27

您应该使用 .htaccess 来执行此操作。您还可以通过 .htaccess 保护您的敏感 php 文件,例如:

Order Allow,Deny
Deny from All

You should use .htaccess to do that. You also can protect by .htaccess your sensible php files, with something like :

Order Allow,Deny
Deny from All
小清晰的声音 2024-09-19 13:52:27

您可以使用使用 PHP 进行 HTTP 身份验证
PHP-docu 中提供了非常好的示例。

You could use HTTP authentication with PHP.
Very good examples present in PHP-docu.

江心雾 2024-09-19 13:52:27

实际上数据库与密码保护无关。
您可以直接在脚本中写入登录名和密码并保存在数据库中。

无需限制对 php 文件的访问。通过 HTTP 调用,它将只是空白页面,仅此而已。

所以,这样存储就可以了。
对于甚至不使用数据库的网站来说已经足够了。

Actually a database have nothing to do with password protection.
you can write login and password directly in your script as well as keeping in in the database.

There is no need in restricting access to your php file. Being called over HTTP, it will be just blank page and nothing more.

So, it's all right to store it that way.
Quite enough for the site that even don't use a database.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文