【问题标题】:Secure form with single user password (without database)使用单用户密码的安全表单(无数据库)
【发布时间】:2014-04-04 13:15:03
【问题描述】:

StackOverflow 上关于保护用户/密码表单、保护管理部分的许多问题。

对于这篇文章,我创建了一个简单的用户密码表单。

我希望使用最佳实践并提高此表单的安全性..

特殊性:

  • 没有数据库
  • 仅 1 个用户/密码
  • 1 个简单的安全页面

我知道我们错过了蛮力系统,但没有这个功能,

(没有 MYSQL 或数据库)

** 这个例子有效

if(isset($_POST) && isset($_POST["send"])):
    $username = isset($_POST['username'])?$_POST['username']:'';
    $password = isset($_POST['password'])?$_POST['password']:'';
    $username = strip_tags( trim( $username ));
    $password = strip_tags( trim( $password ));
    if(preg_match('/^[a-z\d_]{4}$/i', $username) && $username=='user' && preg_match('/^[a-z\d_]{8}$/i', $password) && $password=="password"):
        $_SESSION["login"] = 1;
    else:
        unset($_SESSION["login"]);
    endif;
endif;

if(!isset($_SESSION['login']) || !$_SESSION['login']): 
?>
    <form class="login" action="<?php echo "http://" . $_SERVER["SERVER_NAME"] . $a; ?>" method="post">
        <input type="text" name="username" placeholder="username" /><br>
        <input type="password" name="password" placeholder="password" /><br>
        <button name="send"><span>Send</span></button>
    </form>
<?php else: ?>
    <p>Win !</p>
<?php endif; ?>

【问题讨论】:

  • 我希望使用最佳实践并提高此表单的安全性。
  • 您想提高安全性吗?让您的密码复杂化,老实说,这就是您所能做的。您可以尝试通过将失败的尝试保存到会话来实现伪暴力限制器,并且如果计数高于 3 即不显示表单,即
  • @MarkS 会话与暴力限制器无关,你知道
  • @YourCommonSense 我知道,这就是为什么我说它是一种伪安全,只是一个不使用 db 的想法
  • @MarkS 但它甚至不是“伪”,它根本没有安全性。无论如何,使用相当好的密码不会有暴力破解的问题

标签: php regex security


【解决方案1】:

1) 创建一个随机字符串

2) 使用phpass library 加密数据。将其存储在一个数组中。

https://phpbestpractices.org/#passwords

3) 验证时检查数组中是否存在加密密码。

注意:这纯粹是针对你描述的场景,虽然不推荐

【讨论】:

  • 它不会使页面更安全
  • 鉴于他的情况,这就是我想出的
  • 您应该对场景执行健全性检查
【解决方案2】:

把你放进去的所有无意义的东西都扔掉

session_start();
if(isset($_POST['password']) && $_POST['password'] == 'pass')
{
    $_SESSION["login"] = 1;
}
if(empty($_SESSION['login'])): 
?>
<form class="login" method="post">
    <input type="password" name="password" placeholder="password" />
    <button name="send"><span>Send</span></button>
</form>
<?php exit; endif; ?>

【讨论】:

  • 你应该至少告诉他你做了什么......而不是粘贴公然的代码。
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 2019-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
相关资源
最近更新 更多