【问题标题】:MySQL SELECT an md5MySQL 选择一个 md5
【发布时间】:2017-05-01 23:28:59
【问题描述】:

所以我正在尝试制作一个登录表单,并在数据库中将密码保存为 MD5 $password = md5($_POST['password']);但是当我尝试使用密码 SELECT * FROM ******* WHERE username='$username' AND password='$password' 时,但这不起作用。我唯一能想到的就是我将它保存为 md5 并选择计划文本。

【问题讨论】:

  • 不要使用 MD5 进行密码散列。它非常不安全。

标签: mysql


【解决方案1】:

你可以使用

"SELECT * FROM ******* WHERE username='$username' AND password='".md5($password)."'"

但是,从您的代码中看不到,如果您对变量进行了适当的转义,那么代码似乎容易受到 SQL 注入的攻击。在将变量放入查询之前,您应该正确地转义变量。

无需过多详细说明,有人可以输入用户名,这样查询就会像

SELECT * FROM ******* WHERE username='admin' -- $username' AND password='".md5($password)."'"

这是完全有效的,并且允许他在不知道密码的情况下使用该用户登录。

【讨论】:

  • 我是新手,我该怎么做,因为我真的不知道从哪里开始,这是我看到其他人这样做的方式。
  • @RyanJ Google for "SQL-Injection" 你会发现很多例子它们是如何工作的以及如何避免它们。
  • 我已经尝试过 password='".md5($password)。"但它现在不工作错误页面。认为它与引号有关,知道吗?
猜你喜欢
  • 2011-06-18
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
  • 2016-07-22
  • 2013-11-12
  • 1970-01-01
相关资源
最近更新 更多