Php 使用单用户密码的安全表单(无数据库)

Php 使用单用户密码的安全表单(无数据库),php,regex,security,Php,Regex,Security,关于StackOverflow的许多问题,关于保护用户/密码表单,安全管理部分 对于这篇文章,我创建了一个简单的用户密码表单 我希望使用最佳实践并改进此表单的安全性 特殊性: 没有数据库 仅限1个用户/密码 1个简单的安全页面 我知道我们错过了Bruteforce系统但没有这个功能 (没有MYSQL或数据库) **这个例子有效 if(isset($_POST) && isset($_POST["send"])): $username = isset($_POST['u

关于StackOverflow的许多问题,关于保护用户/密码表单,安全管理部分

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


我希望使用最佳实践并改进此表单的安全性

特殊性:

  • 没有数据库
  • 仅限1个用户/密码
  • 1个简单的安全页面
我知道我们错过了Bruteforce系统但没有这个功能

(没有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; ?>
if(isset($\u POST)和&isset($\u POST[“send”]):
$username=isset($_POST['username'])?$_POST['username']:'';
$password=isset($_POST['password'])?$_POST['password']:'';
$username=strip_标签(trim($username));
$password=strip_标签(trim($password));
如果(preg_match('/^[a-z\d_]{4}$/i',$username)&&$username=='user'&&preg_match('/^[a-z\d_]{8}$/i',$password)&&$password='password'):
$\会话[“登录”]=1;
其他:
取消设置($_会话[“登录]);
endif;
endif;
如果(!isset($_会话['login'])| |!$_会话['login']):
?>

扔掉你放进去的那些毫无意义的东西

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; ?>
session_start();
如果(设置($\u POST['password'])&&&$\u POST['password']=='pass')
{
$\会话[“登录”]=1;
}
如果(空($_会话['login']):
?>
邮寄
1)创建一个随机字符串

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

3) 验证时,检查阵列中是否存在加密密码


注意:这仅适用于您描述的场景,但不推荐使用

我希望使用最佳实践并改进此表单的安全性。您想改进安全性吗?让你的密码复杂化,诚实地说,这就是你所能做的。您可以通过将失败的尝试保存到会话来尝试实现伪蛮力限制器,如果计数大于3,则不显示表单,即@MarkS会话与蛮力限制器无关,您可以know@YourCommonSense我知道,这就是为什么我说它是一个伪安全性,只是一个没有使用db@MarkS但它甚至不是“伪的”,根本不安全。无论如何,有了相当好的密码,没有暴力会是一个问题。你应该至少告诉他你做了什么。而不是粘贴明目张胆的代码。这不会使页面更安全鉴于他的场景,这就是我想出来的原因。你应该对该场景执行一次理智检查