(web安全实践)phpstorm+phpstorm社交论坛网站搭建+安全性测试(三)

(三)注册与登录背后的故事——注册与登录检测

1.输入检测

test_input()函数

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data,ENT_QUOTES);
    return $data;
}

该函数主要用来过滤用户输入,trim() 函数移除字符串两侧的空白字符或其他预定义字符,stripslashes()函数删除反斜           杠,htmlspecialchars()函数把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体。

这个函数主要针对xss攻击作了防御。

2.密码安全

为了用户信息安全性考虑,用户的密码绝对不可以以明文的形式储存在数据库中,该网站采取MD5加密的方式进行用户密码的存储。

3.注册检测(以下代码均为部分关键代码)

        $user = test_input($_POST["username"]);
        $psw = md5(test_input($_POST["password"]));
        $psw_confirm = md5(test_input($_POST["confirm"]));
        if($user == "" || $psw == "" || $psw_confirm == "")
        {
            echo "<script>alert('信息有误,请重新注册!'); history.go(-1);</script>";
        }
        else if (!preg_match("/^[a-zA-Z0-9_]*$/",$user)) {
            echo "<script>alert('信息有误,请重新注册!'); history.go(-1);</script>";
        }
        else if(strlen(test_input($_POST["password"]))<8)
        {
            echo "<script>alert('信息有误,请重新注册!'); history.go(-1);</script>";
        }

4.注册过程实现

  if($psw == $psw_confirm)
            {
                @mysql_connect("localhost","root","tiancy");   //连接数据库
                mysql_select_db("tiancyDb");  //选择数据库
                mysql_query("set names 'utf-8'"); //设定字符集
                $sql = "select username from memberlist where username = '$_POST[username]'"; //SQL语句
                $result = mysql_query($sql);    //执行SQL语句
                $num = mysql_num_rows($result); //统计执行结果影响的行数
                if($num)    //如果已经存在该用户
                {
                    echo "<script>alert('用户名已存在'); history.go(-1);</script>";
                }
                else    //不存在当前注册用户名称
                {
                    $sql_insert = "insert into memberlist(username,password) values('$user','$psw')";
                    $res_insert = mysql_query($sql_insert);
                    //$num_insert = mysql_num_rows($res_insert);
                    if($res_insert)
                    {
                        echo"<script>alert('注册成功');location.href='login.php';</script>";
echo $pswd;
                    }
                    else
                    {
                        echo "<script>alert('系统繁忙,请稍候!'); history.go(-1);</script>";
                    }
                }
            }
            else
            {
                echo "<script>alert('密码不一致!'); history.go(-1);</script>";
            }

在检测过程中注意要对每一种可能出现的情况进行分别处理。

以上就是一个普通用户注册过程的检测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值