嘿咻~要给自己起个萌萌哒新名字哦(〃'▽'〃
1.输入验证:确保用户名和密码不为空,并且长度符合最小要求。
2.防止SQL注入:使用预处理语句和参数绑定。
3.防止CSRF攻击:通过生成一个随机的CSRF令牌,并在表单提交时进行验证。
确保您已经在数据库中创建了users表,并且服务器配置正确以运行PHP脚本。在生产环境中,您还应该实施额外的安全措施,例如使用HTTPS来保护用户数据、限制登录尝试次数以防止暴力破解攻击,以及使用更复杂的用户输入验证和清理策略
用户注册表单(register.php)
<?php session_start(); // 数据库连接代码省略 // 防止CSRF攻击 $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); // 处理注册表单提交 if ($_SERVER["REQUEST_METHOD"] == "POST") { if (!isset($_POST['csrf_token']) ||$_POST['csrf_token'] !== $_SESSION['csrf_token']) { die('CSRF token validation failed'); } $username = trim($_POST['username']); $password =$_POST['password']; // 简单的输入验证 if (empty($username) || empty($password)) { $error = "用户名和密码不能为空!"; } elseif (strlen($username) < 3) { $error = "用户名至少需要3个字符。"; } elseif (strlen($password) < 6) { $error = "密码至少需要6个字符。"; } else { // 密码加密 $hashed_password = password_hash($password, PASSWORD_DEFAULT); // 防止SQL注入 $stmt =$conn->prepare("INSERT INTO users (username, password) VALUES (?, ?)"); $stmt->bind_param("ss",$username, $hashed_password); if ($stmt->execute()) { // 注册成功,重定向到登录页面 header("Location: login.php"); exit; } else { $error = "注册失败,请稍后再试。"; } $stmt->close(); } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册</title> </head> <body> <h1>注册</h1> <?php if (!empty($error)): ?> <p style="color: red;"><?php echo $error; ?></p> <?php endif; ?> <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post"> <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> <label for="username">用户名:</label> <input type="text" name="username" id="username" required> <label for="password">密码:</label> <input type="password" name="password" id="password" required> <input type="submit" value="注册"> </form> <p>已有账号?<a href="login.php">登录</a></p> </body> </html>
暂无评论
请先登录后发表评论!
暂无评论