php 验证用户和密码用还能用函数strcmp()吗?

qq_39131225 2017-06-11 09:03:43
看书的时候,看到说:“直接查询数据库验证用户名和密码,不会区分用户名和密码的大小写”。自己验证了一下,结果确实不会区分(代码如下)。说是建议用函数strcmp()进行比较。
然而,我去baidu上查找相关资料发现说:“strcmp()函数有安全漏洞——构造数组绕过"。所有我想问问各位大侠,现在验证用户名和密码常见的方法是什么?


html页面代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登陆页面</title>
</head>
<body>
<center>
<h2>登陆页面</h2>
</center>

<form action="login_pro.php" method="post">
<table align='center'>
<tr>
<td>用户名:</td>
<td><input type="text" name="user"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="pwd"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>

</body>
</html>
php页面验证代码
<?php
header('content-type:text/html;charset=utf-8');

foreach($_POST as $key => $value)
{
$$key = $value;
}

//var_dump($pwd);die;

$pdo = new PDO('mysql:host=127.0.0.1;dbname=test',"root","root");
$pdo -> exec("set names utf8");
$res = $pdo -> query("select * from ci_user where user ='".$user."' and pwd ='".$pwd."'")->fetch(PDO::FETCH_ASSOC);

// var_dump($res);die;

if($res)
{
echo "<script>alert('用户验证通过。');history.back();</script>";
}
else
{
echo "<script>alert('密码验证错误。');history.back();</script>";
}
...全文
200 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2017-06-12
  • 打赏
  • 举报
回复
引用 4 楼 fdipzone 的回复:
如果是在数据库的,不需要使用strcmp比较 直接使用sql语句比较得了 $sql = "select * from table where password='".$password."'";
疏漏了吧? MySQL 的文本类型是忽略大小写的,而口令应是大小写敏感的 至少要做二进制比较(BINARY)
傲雪星枫 2017-06-12
  • 打赏
  • 举报
回复
如果是在数据库的,不需要使用strcmp比较 直接使用sql语句比较得了 $sql = "select * from table where password='".$password."'";
xuzuning 2017-06-12
  • 打赏
  • 举报
回复
用函数还是直接写表达式,这是你的喜好了。写程序并没有一定之规
qq_39131225 2017-06-12
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
E_WARNING 级别的错误是严重的错误但不是致命的 你本身就不应该盲目相信传入的数据的,所有传入的数据都要做合法性检查 这样就不会让人用数组来钻空子了
先感谢帮忙。 那这样说来,既然做了数据规则的验证,那么就用一般的sql语句查询就可以了,没有必要用函数strcmp()了。是这样吗?我确认一下。
xuzuning 2017-06-12
  • 打赏
  • 举报
回复
E_WARNING 级别的错误是严重的错误但不是致命的 你本身就不应该盲目相信传入的数据的,所有传入的数据都要做合法性检查 这样就不会让人用数组来钻空子了

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧