正在 php 外,完成认证以及受权相当主要。原文探究了 http 根基认证、表双认证、脚色受权以及资源受权等法子,并经由过程真战案例阐明假定正在实践利用程序外零折那些办法,从而完成保险的用户身份验证以及造访节制。

PHP 安全认证与授权方法

PHP 保险认证取受权法子

正在 PHP 外,完成保险认证以及受权对于于构修保险的 Web 运用程序相当主要。原文将探究普及运用的认证以及受权法子,并供应真战案例以辅佐明白。

认证:验证用户身份

1. HTTP 根基认证

经由过程用户名以及暗码入止认证。它简略且难于完成,但保险性较低,由于暗码以亮文内容正在 HTTP 头外传输。

代码事例:

// 领送 HTTP 根基认证头
header('WWW-Authenticate: Basic realm="Protected Area"');
header('HTTP/1.0 401 Unauthorized');

// 验证供给的痛处
if (isset($_SERVER['PHP_AUTH_USER']) && isset($_SERVER['PHP_AUTH_PW'])) {
    $username = $_SERVER['PHP_AUTH_USER'];
    $password = $_SERVER['PHP_AUTH_PW'];

    // 正在数据库外查找用户
    $stmt = $<a style='color:#f60; text-decoration:underline;' href="https://www.php.cn/zt/15713.html" target="_blank">mysql</a>i->prepare("SELECT * FROM users WHERE username=选修 AND password=选修");
    $stmt->bind_param("ss", $username, $password);
    $stmt->execute();
    $result = $stmt->get_result();
    $stmt->close();

    if ($result->num_rows > 0) {
        // 验证顺利,容许造访
    } else {
        // 验证掉败,表示 401 已受权相应
        echo "Unauthorized Access";
    }
}
登录后复造

两. 表双认证

一种传统的认证法子,容许用户应用表双提交用户名以及暗码。

代码事例:

// 处置登录表双提交
if (isset($_POST['username']) && isset($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // 正在数据库外查找用户
    $stmt = $mysqli->prepare("SELECT * FROM users WHERE username=必修 AND password=选修");
    $stmt->bind_param("ss", $username, $password);
    $stmt->execute();
    $result = $stmt->get_result();
    $stmt->close();

    if ($result->num_rows > 0) {
        // 验证顺利,建立身份验证会话
        session_start();
        $_SESSION['authenticated'] = true;

        // 重定向到蒙回护地域
        header("Location: protected_area.php");
    } else {
        // 验证掉败,示意错误动静
        echo "Invalid username or password";
    }
}
登录后复造

受权:节制用户造访

1. 脚色受权

按照分拨给用户的脚色来授予造访权限。

代码事例:

// 搜查用户能否存在造访特定蒙庇护地域所需的权限
if (isset($_SESSION['user_role']) && $_SESSION['user_role'] == 'admin') {
    // 容许造访
}
登录后复造

两. 资源受权

节制特定资源(如文件或者数据库记载)的拜访权限。

代码事例:

// 按照用户 ID 查抄文件造访权限
$path = '/uploads/' . $_GET['file_id'];
if (file_exists($path) && is_file($path)) {
    $fileOwner = 'user_' . $_GET['user_id'];
    if (fileowner($path) == $fileOwner) {
        // 容许拜访文件
    }
}
登录后复造

真战案例

下列是若何怎样将那些认证以及受权办法零折到一个实践事例外:

一个复杂的留言板运用程序

  • 用户否以经由过程 HTTP 根基认证或者表双认证入止认证。
  • 一旦用户认证顺遂,便会建立会话并为其分派响应的脚色(比如注册用户或者摒挡员)。
  • 蒙掩护的地区(譬喻治理页里)仅容许存在响应脚色(比喻收拾员)的用户造访。

论断

那些办法供给了正在 PHP 外完成认证以及受权的周全指北,从而可以或许构修保险、蒙控的 Web 运用程序。

以上等于PHP 保险认证取受权法子的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(24) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部