PHP登录系统硬编码用户名和密码

2023-12-28

我必须做一个基本的登录系统来保护页面,并且我无法访问数据库,所以我将用户名和密码硬编码存储在 php 页面中。

我的问题是,这个登录系统能抵御攻击吗?我需要它保持大约1个月。

任何改进建议都会有所帮助。 该代码不在 Laravel 中,即使它看起来像。 用户名和密码当然会更改为更强的内容。

先感谢您。

<?php
class UserController {
private $username;
private $password;
private $isLoggedIn = false;

// Credentials
public function credentials() {
    $credentials = array(
        array(
            "username" => "telekom",
            "password" => "1234"
        ),
        array(
            "username" => "telekom2",
            "password" => "1234"
        )
    );
    return $credentials;
}

// Basic login
public function login() {
    foreach ($this->credentials() as $credential) {
        if ($this->username == $credential['username'] && $this->password == $credential['password']) {
            Session::put('username', $this->username);
            Session::put('password', $this->password);
            $this->isLoggedIn = true;
        }
    }
}

// Get login status
public function isLoggedIn() {
    return $this->isLoggedIn;
}

// Logout
public function logout() {
    // Delete all sessions
    Session::all();
    redirect('/telekom/');
}

// Telekom
public function telekom() {
    $form = new Form();
    if (Input::get('logout') == 1) {
        $this->logout();
    }

    // Post Data from login form
    if (Input::has('username') || Input::has('password')) {
        if (!$form->isCsrfValid()) {
            $form->errors['CSRF'] = "CSRF Token";
        } // CSRF protection is on, comment to disable
        if (empty($form->errors)) {
            $this->username = Input::get('username');
            $this->password = Input::get('password');

            // Check Login
            $this->login();
            if (!$this->isLoggedIn()) {
                Session::put('login', 'Username and password do not match.');
            } else {
                redirect('/telekom/');
            }
        } else {
            Session::put('login', '<p class="color-dark-red"><strong>Errors:</strong></p>
                        <p>' . $form->displayErrors($form->errors) . '</p>');
        }
    // Check if session has username and password 
    } elseif (Session::has('username') && Session::has('password')) {
        $this->username = Session::get('username', false);
        $this->password = Session::get('password', false);
        // Check Login 
        $this->login();
    }
}
}// EOF Class User

// Outside class
$user = new UserController();

// Outside class
if (!$user->isLoggedIn()) {
    // display login form
} else {
    // display protected content    
}
?>

我的评论越来越长,所以我就把它们移到这里。我不建议您将用户名和密码放在同一个文件中。如果 PHP 无法处理该页面,它将以纯文本形式转储给用户。即使对于数据库连接(其中 un/pwd 几乎必须以纯文本形式存储),大多数人也不会将信息放在同一个文件中。

您有几个选择:

  1. 制作一个单独的 PHP 文件来设置 UN/PWD 变量,将其放置在服务器外部无法访问的位置,并将其包含在 index.php 中。在这种情况下,直到您要比较变量并让本地作用域尽快转储它时,我才会包含该文件。

  2. 由于这是基本的身份验证,您可以使用Apache内置的密码认证模块 https://wiki.apache.org/httpd/PasswordBasicAuth.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP登录系统硬编码用户名和密码 的相关文章

随机推荐

  • 如何调试 WordPress 插件?

    我最近继承了一个 WordPress 插件 其中有一些错误 我的问题是 我也是 WordPress 新手 我不知道如何记录调试消息 以便我可以弄清楚发生了什么 我真的只需要一种方法来创建弹出窗口或登录到控制台 WordPress Stack
  • Boost asio:将 OpenCV IplImage 从 Ubuntu 服务器发送到 Win7 客户端

    我尝试使用 boost asio 库将 OpenCV IplImage 从服务器 Ubuntu x64 传输到客户端 Win7 x64 如果客户端和服务器都在同一操作系统上 则以下代码可以正常工作 但是当服务器在Ubuntu上 客户端在Wi
  • Android Studios:Android 设备管理器在文件资源管理器中未显示 Nougat 7.0 的文件

    我正在学习如何将数据库 SQLite 集成到我的应用程序中 我查了一下这个tutorial https youtu be p8TaTgr4uKM t 10m在10m处 OP进入Android Studio中Android设备管理器中的Fil
  • Aurelia Repeat.for 在模型更改时不会刷新

    我想使用 Aurelia 构建一个简单的自定义组件 允许用户输入一个或多个字符串 当有多个项目时 应显示列表remove列表中每个项目的按钮 我的问题是列表的第一项没有显示remove当列表中有多个项目时按钮 这就是它的样子 https i
  • Ruby 中的 HTML 解析器转换为 DOM

    Ruby 中是否有任何 HTML 解析器可以将 HTML 文档读入 DOM 树并将 HTML 标签表示为 DOM 元素 我知道 Nokogiri 但它不会将 HTML 解析为 DOM 树 尽管有你的评论 Nokogiri 是正确的选择 do
  • SignalR 是否支持发布/订阅消息传递范例?

    我想在网络场中的多个服务器之间使用发布 订阅消息传递来保持其本地 ASP NET 缓存同步 使用 SignalR 可以轻松完成此操作吗 如果可以的话我该怎么做 None
  • is_pagination 不适用于 django 通用视图

    我一直在我的几个页面中使用 django 内置分页 is pagination 他们都工作得很好 除了搜索页面外 分页应该仅根据过滤后的查询集显示 我已经检查了其他一些线程 但没有多大帮助 如何使用基于 Django 类的通用 ListVi
  • array_column 和 foreach,性能方面哪个更好?

    我很好奇 php 函数 array column 与常规 foreach 循环相比的性能 就我而言 我想将数据库表中的单列数据获取到数组中 我的查询结果 10k 到 50k 记录 所以我应该使用常规 foreach 循环还是 array c
  • 如何在 pyproject.toml 中指定“额外”/括号依赖项?

    我正在开发一个项目 该项目使用指定其依赖项Poetry https python poetry org docs pyproject and a pyproject toml https www python org dev peps pe
  • setuptools、easy_install 和自定义 pypi 服务器

    我有一个正在运行的自定义 pypi 服务器 我想知道如何将所有引用指向https pypi python org https pypi python org 从那里到我的自定义服务器 我希望能够涵盖用户调用的情况pip easy insta
  • 删除重复项并将其按行计数

    我想删除重复的条目 然后对它们进行计数以将它们显示在我的 php ROW 中的条目旁边 我已经尝试过这个
  • 从浏览器中删除cookie

    如何在asp net c 中从浏览器中删除cookie 就是这样 if Request Cookies MyCookie null HttpCookie myCookie new HttpCookie MyCookie myCookie E
  • 行尾有一个字母单词(对齐)

    我想知道如果文本行末尾有一个字母单词我能做什么 例如 Hello my name is John Smith and I am a freshman 如何将 I 移动到下一行 并调整整行 因为当我把 br 然后证明崩溃的合理性 这是jsfi
  • XCode自动生成注释?

    每次当我在 XCode 中创建一个新文件时 它都会在文件顶部做出一些注释 最近它发生了某种变化 我不知道为什么以及如何重置它 现在是这样的 Filename cpp Projectname Created by Name on Date C
  • 为什么 setMap(null) 不起作用 google 地图 api v3?

    我正在使用谷歌地图 API 3 9 在应用程序中 用户可以添加标记或删除标记 当用户单击地图时 将显示信息窗口 用户可以在其中输入名称 纬度 经度 然后单击保存图像 如下所示 google maps event addListener ma
  • Git:创建新分支并推送到远程的有效步骤

    我想出了步骤 但看起来很麻烦 采取bitbucket例如 假设我已经有一个名为prj 我从服务器端 bitbucket com 分支一个新项目 名为prj bz 从本地我添加添加远程git remote add prj bz https b
  • 在 SLURM 中运行没有顶级脚本的二进制文件

    在 SGE PBS 中 我可以像在本地一样向集群提交二进制可执行文件 例如 qsub b y cwd echo hello 将提交一个名为 echo 的作业 该作业将单词 hello 写入其输出文件 我如何向 SLURM 提交类似的工作 它
  • 删除所有行,从 /pattern/ 之后的两行开始

    假设我有一个文件如下 drink eat XXX pizza blunzn sushi 我想从文件中删除所有行 从模式后的第三行开始XXX 所以结果应该是这样的 drink eat XXX pizza blunzn 删除之后的所有行XXX很
  • Hibernate Criteria n+1 最大结果问题

    使用 hibernate ctiteria 我想选择一个对象及其关联的 oneToMany 对象列表 我想对此列表进行分页 以避免可怕的休眠 n 1 选择问题 这是一个可行的解决方案 需要 10 个父对象对数据库进行 11 次访问 Crit
  • PHP登录系统硬编码用户名和密码

    我必须做一个基本的登录系统来保护页面 并且我无法访问数据库 所以我将用户名和密码硬编码存储在 php 页面中 我的问题是 这个登录系统能抵御攻击吗 我需要它保持大约1个月 任何改进建议都会有所帮助 该代码不在 Laravel 中 即使它看起