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

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

index.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="index.aspx.cs" Inherits="index" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server"><title></title><script type="text/javascript" src="jquery.js"></script><script>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;}}</script>
</head>
<body><form id="form1" runat="server"><div><input id="HDToken" type="hidden"  runat="server" /><input id="Button1" type="button" value="提交"  onclick="submist()"/><asp:Button ID="Button2" runat="server" Text="清除" onclick="Button2_Click" /></div></form>
</body>
</html>

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 + 1;if (min > 1){Session.Remove("Token");//时间大于1分钟,移除
                    }}}}protected void Button2_Click(object sender, EventArgs e){Session.Abandon();}
}

index.ashx

<%@ WebHandler Language="C#" Class="index" %>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){///生成 Tokenstring 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"];

转载于:https://www.cnblogs.com/qigege/p/4828289.html

AJAX安全-Session做Token相关推荐

  1. 做web开发,怎么能不懂cookie、session和token呢?

    如果把人体比作一个web系统的话,cookie.session和token就好像人体的经络和血管一样,而web系统中的数据,就好像人体的血液一样.血液依靠着血管在人体内流动,就如数据根据cookie和 ...

  2. Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案

    文章目录 Cookie VS Session VS Token History Cookie Session Token Session不一致问题 Session不一致解决方案 nginx sessi ...

  3. 【转】彻底理解cookie,session,token

    转自:https://zhuanlan.zhihu.com/p/63061864 彻底理解cookie,session,token 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是 ...

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

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

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

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

  6. Cookie和Session和Token的区别联系

    目录 发展史 2 Cookie 3 Session 3.1 cookie和session的区别 4 Token 4.1 传统方式--基于服务器的验证 4.2 基于服务器验证方式暴露的一些问题 4.3 ...

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

    面试的时候面试官经常会问,CDN 是否会传递 Cookie 信息?是否会对源站 Session 有影响?Token 的防盗链配置为什么总是配置失败?为此,我们就针对 Cookie.Session 和 ...

  8. 还分不清 Cookie、Session、Token、JWT?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 转自:掘金   作者:秋天不落叶 juejin.im/po ...

  9. 干掉服务状态!从 Session 到 Token,复杂度降低100倍!

    作者 l 会点代码的大叔(CodeDaShu) 在讲Token之前,先简单说说什么是 Session 和 Cookie. 首先要知道 HTTP 请求是无状态的: 无状态的意思就是:每一次请求都是独立的 ...

最新文章

  1. RepeatMasker安装和使用——基因组重复序列注释
  2. iphone相册储存空间已满_无需第三方APP,加密 iPhone 中的照片
  3. js.map error
  4. sql2005导出Excel错误解决方法
  5. 1.计算机语言发展史
  6. 左手自研,右手开源,技术解读华为云如何领跑容器市场
  7. matlab数组补零,fft补零 - 木头弯弯的小窝 - 与非博客 - 与非网
  8. spring框架_Spring框架
  9. Atitit.图片木马的原理与防范 attilax 总结
  10. C++11中的原子操作(atomic operation)
  11. 【JAVA】第十一届蓝桥杯省模拟赛答案(本科组)
  12. 哈理工OJ 2274 Heroic Action(01坑背包)
  13. mht2html百度云,强烈推荐国内最好的网盘–115网盘
  14. C/C++基础题035.一元二次方程公式
  15. UWP笔记-消息弹窗自动淡出
  16. 基于STM32的智能快递箱(快递驿站)设计
  17. 干货 | LoRaWAN 协议中文版,你要的pdf来了
  18. Sping学习笔记(附实例,超详细)
  19. Cisco(60)——DHCPv6
  20. 《海盗猎人》的优秀读后感范文5000字

热门文章

  1. python标准库学习4
  2. 高性能NoSql数据库 SSDB
  3. 在 Docker 中运行 MySQL:多主机网络下 Docker Swarm 模式的容器管理
  4. ps aux参数说明
  5. HubbleDotNet 简介 (转)
  6. [翻译]LightRacer游戏架构
  7. Java Robot对象实现服务器屏幕远程监视
  8. 代理上网环境下配置TortoiseCVS
  9. 一篇文章让你了解智能合约以及和区块链的关系
  10. 动态加载的html没有js效果,JS利用html5实现loadding动态加载效果代码实例