免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3822 | 回复: 11
打印 上一主题 下一主题

大家看我写的SESSION验证可以吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-18 12:27 |只看该作者 |倒序浏览
Login.php
<html>

<head>
  <title></title>
</head>

<body>

<form name="FormName" action="check.php" method="post">
帐号:<input name="username" type="text" value="">
密码:<input name="pwd" type="password" value="">
<input type="submit" value="Send">

</form>

</body>

</html>


session.php
<?

include "data.php";    //数据库连接信息
$username=$_POST['username'];
$pwd=$_POST['pwd'];
$select="SELECT * FROM user WHERE name='$username' AND pwd='$pwd'";
$query=mysql_query($select);
$row=mysql_num_rows($query);  //从数据库中取得行数
if($row>0)                    //如果从数据库中取行数为0,则表示没有此用户
{   session_start();
    session_register("username");  //注册用户
    echo "登陆成功"; exit();
} else
{
echo "帐号密码错误";exit();

}

?>
<a href="session.php">link </a>


test.php
<?
session_start();
if(!session_is_registered("username"))
{
        echo "你还没有登陆";
    exit();
}
else
{
echo "欢迎回来".$username;

}


?>

session.jpg (13.98 KB, 下载次数: 51)

session.jpg

论坛徽章:
0
2 [报告]
发表于 2007-10-18 16:55 |只看该作者
建议把用户提交的$username,$pwd过滤一下

论坛徽章:
0
3 [报告]
发表于 2007-10-18 23:09 |只看该作者
1、“select * from table where 用户名 and 密码”被认为是一种不太安全的用法;2、session_register()函数也属于老的用法了,直接写$_SESSION['username']=$username就可以了

论坛徽章:
0
4 [报告]
发表于 2007-10-19 15:06 |只看该作者

回复 #3 gaoyikun 的帖子

1、“select * from table where 用户名 and 密码”被认为是一种不太安全的用法;
请教一下,比较安全的方法怎么弄啊,老大!

论坛徽章:
0
5 [报告]
发表于 2007-10-19 19:49 |只看该作者
原帖由 yuxiaqiao 于 07 10 19 15:06 发表
1、“select * from table where 用户名 and 密码”被认为是一种不太安全的用法;
比较安全的方法怎么弄啊



应该加密吧,数据库存储的应该是pwd的md5值

$pwd应该设置为$username=md5($_POST['username']);


然后select $pwd就没有问题了

问题出在你直接使用了明码


~~也是新手,互相学习吧,不知道是不是说错了,请高手指点

论坛徽章:
0
6 [报告]
发表于 2007-10-19 22:51 |只看该作者
回4楼、5楼,在一条sql语句里同时验证用户名和密码存在被sql注入的可能,一般应该将验证用户名和密码分成两步

论坛徽章:
0
7 [报告]
发表于 2007-10-20 14:31 |只看该作者
原帖由 gaoyikun 于 2007-10-19 22:51 发表
回4楼、5楼,在一条sql语句里同时验证用户名和密码存在被sql注入的可能,一般应该将验证用户名和密码分成两步



select * from users where user='$user';
$row = mysql_fetch_result($connect);
if( $row['password'] == $_POST['password'] ) {
  echo "";
}
else {
  echo "";
}

论坛徽章:
0
8 [报告]
发表于 2007-10-20 20:27 |只看该作者
楼上的真有意思


论坛徽章:
0
9 [报告]
发表于 2007-10-20 22:42 |只看该作者
同意6楼、7楼的看法

论坛徽章:
3
金牛座
日期:2013-10-12 15:42:452015年辞旧岁徽章
日期:2015-03-03 16:54:15IT运维版块每日发帖之星
日期:2016-06-01 06:20:00
10 [报告]
发表于 2007-10-22 09:51 |只看该作者
六七楼正解

[ 本帖最后由 flynetcn 于 2007-10-22 09:52 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP