【问题标题】:Single User Authentication with PHP使用 PHP 进行单用户身份验证
【发布时间】:2011-10-22 06:50:31
【问题描述】:

我需要构建一个极其简单的单用户身份验证系统。它用于管理后端,我只需要一个用户帐户就可以访问它。我宁愿不必创建“用户”数据库。由于只有一个用户,它甚至可能只是一个密码 (不需要用户名)。一个 javascript 警报窗口将是输入此信息的好地方。

我以前在供应商“审查”服务器上见过它......如何最好地实现它?

谢谢!

【问题讨论】:

标签: php session authentication


【解决方案1】:

对于每个需要认证的页面,你可以使用会话来查看用户是否通过了认证,如果没有,将他重定向到认证页面。

例如,如果您有一个需要身份验证的 admin.php 页面,您可以从以下内容开始:

<?php

session_start();

if (empty($_SESSION['authenticated'])) {
    header('Location: authenticate.php');
    exit;
}

/* rest of the script ... */

然后,authenticate.php 可以是一个要求输入密码的简单脚本。如果密码正确(if ($_POST['password'] == "secret")),它只是设置$_SESSION['authenticated'] = true

【讨论】:

    【解决方案2】:

    我一直在将这种技术用于一些管理目的:

    • 不要创建任何用户帐户,而是创建一个具有管理任务所需权限的数据库用户
    • 以您的数据库用户和数据库密码登录系统,并将这些数据存储在会话变量中
    • 每次您需要访问数据库时都使用这些变量。如果用户没有使用适当的凭据登录,将无法执行任何操作。

    【讨论】:

    • 我其实很喜欢使用真实的数据库用户进行用户身份验证。是的,性能会受到影响,但是您可以从数据库端访问控制(包括对用户名的视图过滤)中获得很多好处。当然不是灵丹妙药,但对于安全性比原始性能更受关注的应用程序很有用。
    • 如果 OP 是数据库管理员,这不是唯一可行的吗?在他/她从托管服务提供商处租用网络空间的情况下,情况可能并非如此。
    • 如果你给任何真实用户一个 DB 用户,响应是肯定的。但是,如果您只有一个用户(管理员),那么您至少必须有一个可以用来实现此机制的数据库用户。
    【解决方案3】:

    最简单的方法是不创建任何用户表或凭据或会话或任何东西,只需按照 mario 的建议使用 .htpasswd 为管理员密码保护目录

    您可以使用此tutorial 更好地理解和轻松设置

    【讨论】:

      猜你喜欢
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2013-03-11
      • 2011-04-25
      • 2018-06-30
      相关资源
      最近更新 更多