防止Cookie修改id欺骗登录

阅读: 评论:0

防止Cookie修改id欺骗登录

防止Cookie修改id欺骗登录

在开发网站时,经常需要通过保存在Cookie中的id恢复Session登录。恶意用户通过修改Cookie中的id欺骗登录,例如,在开发者模式下:

 笔者设计了自动重新申请session的机制(具体见前期文章),当session过期,可以创建新的session续航。为了防止修改id,可以采用校验码机制:

(1)登录时创建校验码:check_key并生成验证序列check_code

(2)将id和验证串check_code保存到cookie中,将check_key保存到用户表记录字段中

(3)需要通过cookie恢复网页时,将cookie中的验证串和通过用户表存储的check_key计算出来的验证串作比对,从而实现防欺骗

(4)由于cookie中的id附加了验证串,在登录时需要清除,防止文本框(设id为txtUserID)自动搜索填充:

    $(document).ready(function () {var c_input = $("#txtUserID").val();if (c_input.indexOf("|") != -1)$("#txtUserID").val(c_input.split("|")[0]);});

(5)网页中的验证:

HttpCookie readcookie = Request.Cookies["userID"];
string[] a_uid = readcookie.Value.ToString().Split('|');
string cuid = a_uid[0];
string ccheck = a_uid[1];
if (Users.CookieCheck(cuid, ccheck) == false) Response.Redirect("login.aspx");

(6)Users类创建验证方法

public bool CookieCheck(string cuserid, string ccheckstring)
{DataBase DB = new DataBase();string sql = "select user_check from users where USERID='" + cuserid + "'";DataSet ds = DB.GetDataSetSql(sql);if (ds.Tables[0].Rows.Count <= 0){return false;}else{string c_user_check = ds.Tables[0].Rows[0].ItemArray[0].ToString();if (String.IsNullOrEmpty(c_user_check) || c_user_check.ToLower()=="null") return false;int nkey = int.Parse(ds.Tables[0].Rows[0].ItemArray[1].ToString());if (ccheckstring == CreateCookieCheck(cuserid, nkey))return true;elsereturn false;}
}public string CreateCookieCheck(string cuserid, int nkey)
{//根据cuserid和nkey生成验证串......
}

本文发布于:2024-01-27 19:49:46,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063561892280.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Cookie   id
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23