为了账号安全,请及时绑定邮箱和手机立即绑定

防止对php登录系统的恶意攻击

防止对php登录系统的恶意攻击

C#
慕容森 2022-01-09 10:51:27
我正在开发一个允许用户注册和登录的 C# 应用程序。我打算在服务器端代码上使用 MySQL 数据库和 PHP。这是我计划使用的服务器端代码。此代码复制自以下两篇文章。(安全)PHP 登录系统(防止 SQL 注入)使用 PHP 的登录系统注册.php<?php$conn = new mysqli("db4free.net", "csharptricks", "12345678", "csharptricks");$username = $_POST["username"];$password = $_POST["password"];$hashedpw = md5($password);$stmt = $conn->prepare("SELECT username FROM Users WHERE username = ?");$stmt->bind_param("s", $username);$stmt->execute();$stmt->store_result();if ($stmt->num_rows > 0) {     echo "Existing";}else {      $stmt = $conn->prepare("INSERT INTO Users (username, password) VALUES (?, ?);");     $stmt->bind_param("ss", $username, $hashedpw);     $stmt->execute();     echo "Success";}?>登录.php<?phpsession_start();$conn = new mysqli("db4free.net", "csharptricks", "12345678", "csharptricks");$username = $_POST["username"];$password = $_POST["password"];$hashedpw = md5($password);$stmt = $conn->prepare("SELECT username, password FROM Users WHERE username = ? LIMIT 1");$stmt->bind_param("s", $username);$stmt->execute();$stmt->bind_result($output1, $output2);$row = $stmt->fetch();if($output2 == $hashedpw) {     $_SESSION["username"] = $username;     echo "LoginGood"; } else {     echo "LoginBad"; } ?>我是 PHP 新手,所以我想从专家那里知道这段代码是否存在风险。任何意见和建议都非常感谢。提前致谢。
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

如果您使用的是 PHP 5.5.0 或更高版本,最好使用内置password_hash()函数来生成散列密码。password_hash()使用强大的单向散列算法创建新的密码散列。

string password_hash ( string $password , int $algo [, array $options ] )

当前支持以下算法:

  • PASSWORD_DEFAULT - 使用 bcrypt 算法(默认为 PHP 5.5.0)。请注意,此常量旨在随着 PHP 中添加新的和更强大的算法而随时间而变化。因此,使用此标识符的结果长度可能会随时间而变化。因此,建议将结果存储在可以扩展超过 60 个字符的数据库列中(255 个字符将是一个不错的选择)。

  • PASSWORD_BCRYPT - 使用 CRYPT_BLOWFISH 算法创建散列。这将使用“$2y$”标识符生成标准 crypt() 兼容哈希。结果将始终是 60 个字符的字符串,或者失败时为 FALSE。

  • PASSWORD_ARGON2I - 使用 Argon2 散列算法创建散列。

要验证使用散列的密码password_hash(),您需要使用password_verify()函数。

bool password_verify ( string $password , string $hash )


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 222 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号