ajax登录返回token,AJAX安全-Session做Token
個人思路,請大神看到了指點
個人理解token是防止掃號機或者惡意注冊、惡意發(fā)表灌水,有些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("系統(tǒng)錯誤" + 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);
}
在請求結(jié)果頁面直接獲得string Token = context.Request.Headers["token"];
第八節(jié):常見安全隱患和傳統(tǒng)的基于Session和Token的安全校驗
一. 常見的安全隱患 ?1. SQL注入 常見的案例: String query = "SELECT * FROM T_User WHERE userID='" + Request ...
為什么你學不會遞歸?告別遞歸,談談我的一些經(jīng)驗 關(guān)于集合中一些常考的知識點總結(jié) .net輾轉(zhuǎn)java系列(一)視野 徹底理解cookie,session,token
為什么你學不會遞歸?告別遞歸,談談我的一些經(jīng)驗 ? 可能很多人在大一的時候,就已經(jīng)接觸了遞歸了,不過,我敢保證很多人初學者剛開始接觸遞歸的時候,是一臉懵逼的,我當初也是,給我的感覺就是,遞歸太神奇了! ...
cookie、session和token的概念
Cookie.Session和Token都是為了解決Web身份校驗而產(chǎn)生的,這里對它們的概念做一個簡單了解. Web身份校驗的發(fā)展 很久很久以前,Web基本上就是文檔的瀏覽而已.既然是瀏覽,作為服務器 ...
理解cookie,session,token
徹底理解cookie,session,token 發(fā)展史 1.很久很久以前,Web 基本上就是文檔的瀏覽而已, 既然是瀏覽,作為服務器, 不需要記錄誰在某一段時間里都瀏覽了什么文檔,每次請求都是一個新 ...
[轉(zhuǎn)帖]徹底理解cookie,session,token
徹底理解cookie,session,token https://www.cnblogs.com/moyand/p/9047978.html 發(fā)展史 1.很久很久以前,Web 基本上就是文檔的瀏覽而已 ...
關(guān)于新手必須要理解的幾個名詞,cookie、session和token
以下要說的,雖然不是開發(fā)過程中必須會遇到的,但卻是進階之路上必須要掌握的,一些涉及到狀態(tài)管理與安全的應用當中尤為重要. 我之前雖略有學習,但也是東拼西湊臨時看的一點皮毛,所以在這個假期利用一點時間,整 ...
3 分鐘帶你深入了解 Cookie、Session、Token
經(jīng)常會有用戶咨詢,CDN 是否會傳遞 Cookie 信息,是否會對源站 Session 有影響,Token 的防盜鏈配置為什么總是配置失敗?為此,我們就針對 Cookie.Session 和 Toke ...
cookie、session與token
一.詳述概念 1.Cookie機制 cookie機制是采用在客戶端保持狀態(tài)的方案(cookie的作用就是為了解決HTTP協(xié)議無狀態(tài)的缺陷所作的努力).cookie的使用是由瀏覽器按照一定的原則在后臺自 ...
小白必讀:閑話HTTP短連接中的Session和Token
本文引用了劉欣的文章,感謝原作者的分享. 1.引言 Http協(xié)議在現(xiàn)今主流的IM系統(tǒng)中擁有無可替代的重要性(在IM系統(tǒng)中用HTTP發(fā)起的連接被大家簡稱為http短連接),但Http作為傳統(tǒng)互聯(lián)網(wǎng)信息交 ...
隨機推薦
《C#微信開發(fā)系列(4)-接收 / 返回文本消息》
4.0接收 / 返回文本消息 ①接收/返回文本消息原理說明 當普通微信用戶向公眾賬號發(fā)消息時,微信服務器將POST消息的XML數(shù)據(jù)包到開發(fā)者填寫的URL上,著手開發(fā)之前先行閱讀微信公眾平臺接收普通消息 ...
二叉樹的遍歷(遞歸,迭代,Morris遍歷)
二叉樹的三種遍歷方法: 先序,中序,后序,這三種遍歷方式每一個都可以用遞歸,迭代,Morris三種形式實現(xiàn),其中Morris效率最高,空間復雜度為O(1). 主要參考博客: 二叉樹的遍歷(遞歸,迭代, ...
java實現(xiàn)文件編碼監(jiān)測(轉(zhuǎn))
chardet是mozilla自動字符集探測算法代碼的java移植.這個算法的最初作者是frank Tang,C++源代碼在http://lxr.mozilla.org/mozilla/source/ ...
我的Python成長之路---第一天---Python基礎(chǔ)(作業(yè)2:三級菜單)---2015年12月26日(霧霾)
作業(yè)二:三級菜單 三級菜單 可一次進入各個子菜單 思路: 這個題看似不難,難點在于三層循環(huán)的嵌套,我的思路就是通過flag的真假來控制每一層的循環(huán)的,簡單來說就是就是通過給每一層循環(huán)一個單獨的布爾變量 ...
關(guān)于TCP的握手與揮手-----簡單解釋
所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發(fā)送3個包以確認連接的建立.在socket編程中,這一過程由客戶端執(zhí)行conn ...
mysql-筆記 隔離級別、事務
1 隔離級別:低級別的隔離通常可以執(zhí)行更高的并發(fā),系統(tǒng) 開銷也更低 2 Read uncommitted:事務可以讀取未提交的數(shù)據(jù),臟讀,應少用 3 read committed:不可重復讀,事務只能 ...
Exp7 網(wǎng)絡欺詐防范
Exp7 網(wǎng)絡欺詐防范 20154305 齊帥 一.實踐內(nèi)容 本實踐的目標理解常用網(wǎng)絡欺詐背后的原理,以提高防范意識,并提出具體防范方法.具體實踐有 (1)簡單應用SET工具建立冒名網(wǎng)站 (2)ett ...
rsync定時同步文件
rsync服務器 ip:192.168.1.198 操作系統(tǒng):centos7.2 rsync客戶端 ip:192.168.1.16 操作系統(tǒng):centos7.2 服務器配置 1.yum -y inst ...
3DS更新R4燒錄卡內(nèi)核
機子是N3DSLL,用的R4燒錄卡是銀卡HK版. 關(guān)于R4燒錄卡的基礎(chǔ)知識科普貼: https://tieba.baidu.com/p/4855297365 為了防止該網(wǎng)頁掛掉還是存圖吧. 找最新內(nèi)核 ...
校對雙層PDF中的隱藏文本
作者:馬健郵箱:stronghorse_mj@hotmail.com發(fā)布:2012.06.11 目錄一.背景二.能夠校對的PDF需要滿足的條件三.校對工具的選擇四.校對過程五.延伸討論 事先聲明:本文 ...
總結(jié)
以上是生活随笔為你收集整理的ajax登录返回token,AJAX安全-Session做Token的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何评估开发费 (From 程序匠人)
- 下一篇: 数据机房温湿度检测物联网以太网传感器解决