ajax登录返回token,AJAX安全-Session做Token

个人思路,请大神看到了指点

个人理解token是防止扫号机或者恶意注册、恶意发表灌水,有些JS写的token算法,也会被抓出来被利用,个人感觉还是用会过期的Session做token更好,服务器存储,加载到客户端页面,然后进行对比

index.aspx

function submist() {

if ($("#HDToken").val() != null) {

var JsonData = {

Token: $("#HDToken").val(),

sid: Math.random()

};

$.ajax({

type: "post",

url: "index.ashx",

dataType: "json",

data: JsonData,

success: function (data) {

if (data[0].status == 'success') {

alert("成功" + data[0].message);

}

else {

alert("失败" + data[0].message);

}

},

error: function (data, status, e) {

alert("系统错误" + status + "|" + data[0].message);

}

});

}

else {

alert("回话过期,重新刷新页面");

return;

}

}

index.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

public partial class index : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

string Token = "";

if (Session["Token"] == null)

{

Session["Token"] = DateTime.Now.ToString();

Token = Session["Token"].ToString();

HDToken.Value = FormsAuthentication.HashPasswordForStoringInConfigFile(Token, "md5").ToLower();//MD5加密后赋值给隐藏域

//Response.Write(HDToken.Value);

}

else

{

Token = Session["Token"].ToString();

HDToken.Value = FormsAuthentication.HashPasswordForStoringInConfigFile(Token, "md5").ToLower();

// Response.Write(HDToken.Value);

//以下为回话过期,可以放在Global.asax 做定时器

TimeSpan span=DateTime.Now.Subtract(Convert.ToDateTime(Session["Token"]));

int min = span.Minutes + ;

if (min > )

{

Session.Remove("Token");//时间大于1分钟,移除

}

}

}

}

protected void Button2_Click(object sender, EventArgs e)

{

Session.Abandon();

}

}

index.ashx

using System;

using System.Web;

using System.Web.Security;

using System.Web.SessionState;

public class index : IHttpHandler, IRequiresSessionState

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = "text/plain";

string Token = context.Request["Token"];//获得隐藏域的值

if (context.Session["Token"] != null)

{

if (FormsAuthentication.HashPasswordForStoringInConfigFile(context.Session["Token"].ToString(), "md5").ToLower() == Token)

{

context.Response.Write("[{\"message\":\"成功\",\"status\":\"success\"}]");

context.Response.End();

return;

}

else

{

context.Response.Write("[{\"message\":\"失败\",\"status\":\"error\"}]");

context.Response.End();

return;

}

}

else

{

context.Response.Write("[{\"message\":\"过期\",\"status\":\"error\"}]");

context.Response.End();

return;

}

}

public bool IsReusable {

get {

return false;

}

}

}

另一种方法,在请求头部加入token

if (!IsPostBack)

{

///生成 Token

string Token = new Random().NextDouble().ToString();

Session["token"] = Token;

System.Web.UI.HtmlControls.HtmlGenericControl script = new System.Web.UI.HtmlControls.HtmlGenericControl("script");

script.Attributes.Add("type", "text/javascript");

script.InnerHtml = @"

$.ajaxSetup({

beforeSend: function (xhr) {

xhr.setRequestHeader(""token"", """ + Token + @""");

}

});

";

Page.Header.Controls.Add(script);

}

在请求结果页面直接获得string Token = context.Request.Headers["token"];

第八节:常见安全隐患和传统的基于Session和Token的安全校验

一. 常见的安全隐患  1. SQL注入 常见的案例: String query = "SELECT * FROM T_User WHERE userID='" + Request ...

为什么你学不会递归?告别递归,谈谈我的一些经验 关于集合中一些常考的知识点总结 .net辗转java系列(一)视野 彻底理解cookie,session,token

为什么你学不会递归?告别递归,谈谈我的一些经验   可能很多人在大一的时候,就已经接触了递归了,不过,我敢保证很多人初学者刚开始接触递归的时候,是一脸懵逼的,我当初也是,给我的感觉就是,递归太神奇了! ...

cookie、session和token的概念

Cookie.Session和Token都是为了解决Web身份校验而产生的,这里对它们的概念做一个简单了解. Web身份校验的发展 很久很久以前,Web基本上就是文档的浏览而已.既然是浏览,作为服务器 ...

理解cookie,session,token

彻底理解cookie,session,token 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新 ...

[转帖]彻底理解cookie,session,token

彻底理解cookie,session,token https://www.cnblogs.com/moyand/p/9047978.html 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已 ...

关于新手必须要理解的几个名词,cookie、session和token

以下要说的,虽然不是开发过程中必须会遇到的,但却是进阶之路上必须要掌握的,一些涉及到状态管理与安全的应用当中尤为重要. 我之前虽略有学习,但也是东拼西凑临时看的一点皮毛,所以在这个假期利用一点时间,整 ...

3 分钟带你深入了解 Cookie、Session、Token

经常会有用户咨询,CDN 是否会传递 Cookie 信息,是否会对源站 Session 有影响,Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie.Session 和 Toke ...

cookie、session与token

一.详述概念 1.Cookie机制 cookie机制是采用在客户端保持状态的方案(cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力).cookie的使用是由浏览器按照一定的原则在后台自 ...

小白必读:闲话HTTP短连接中的Session和Token

本文引用了刘欣的文章,感谢原作者的分享. 1.引言 Http协议在现今主流的IM系统中拥有无可替代的重要性(在IM系统中用HTTP发起的连接被大家简称为http短连接),但Http作为传统互联网信息交 ...

随机推荐

《C#微信开发系列(4)-接收 / 返回文本消息》

4.0接收 / 返回文本消息 ①接收/返回文本消息原理说明 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上,着手开发之前先行阅读微信公众平台接收普通消息 ...

二叉树的遍历(递归,迭代,Morris遍历)

二叉树的三种遍历方法: 先序,中序,后序,这三种遍历方式每一个都可以用递归,迭代,Morris三种形式实现,其中Morris效率最高,空间复杂度为O(1). 主要参考博客: 二叉树的遍历(递归,迭代, ...

java实现文件编码监测(转)

chardet是mozilla自动字符集探测算法代码的java移植.这个算法的最初作者是frank Tang,C++源代码在http://lxr.mozilla.org/mozilla/source/ ...

我的Python成长之路---第一天---Python基础(作业2:三级菜单)---2015年12月26日(雾霾)

作业二:三级菜单 三级菜单 可一次进入各个子菜单 思路: 这个题看似不难,难点在于三层循环的嵌套,我的思路就是通过flag的真假来控制每一层的循环的,简单来说就是就是通过给每一层循环一个单独的布尔变量 ...

关于TCP的握手与挥手-----简单解释

所谓三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立.在socket编程中,这一过程由客户端执行conn ...

mysql-笔记 隔离级别、事务

1 隔离级别:低级别的隔离通常可以执行更高的并发,系统 开销也更低 2 Read uncommitted:事务可以读取未提交的数据,脏读,应少用 3 read committed:不可重复读,事务只能 ...

Exp7 网络欺诈防范

Exp7 网络欺诈防范 20154305 齐帅 一.实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网站 (2)ett ...

rsync定时同步文件

rsync服务器 ip:192.168.1.198 操作系统:centos7.2 rsync客户端 ip:192.168.1.16 操作系统:centos7.2 服务器配置 1.yum -y inst ...

3DS更新R4烧录卡内核

机子是N3DSLL,用的R4烧录卡是银卡HK版. 关于R4烧录卡的基础知识科普贴: https://tieba.baidu.com/p/4855297365 为了防止该网页挂掉还是存图吧. 找最新内核 ...

校对双层PDF中的隐藏文本

作者:马健邮箱:stronghorse_mj@hotmail.com发布:2012.06.11 目录一.背景二.能够校对的PDF需要满足的条件三.校对工具的选择四.校对过程五.延伸讨论 事先声明:本文 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值