token防止重复提交

Token,能够翻译成标记!最大的特色就是随机性,不可预测,通常黑客或软件没法猜想出来。

Token通常用在两个地方:

  • 1: 防止表单重复提交
  • 2: anti csrf攻击(Cross-site request forgery 跨站点请求伪造)

二者在原理上都是经过session token来实现的。当客户端请求页面时,服务器会生成一个随机数Token,而且将Token放置到session当中,而后将Token发给客户端(通常经过构造hidden表单)。
下次客户端提交请求时,Token会随着表单一块儿提交到服务器端。html

一、应用于“anti csrf攻击”:

服务器端会对Token值进行验证,判断是否和session中的Token值相等,若相等,则能够证实请求有效,不是伪造的。json

二、应用于“防止表单重复提交”:

服务器端第一次验证相同事后,会将session中的Token值更新下,若用户重复提交,第二次的验证判断将失败,由于用户提交的表单中的Token没变,但服务器端session中Token已经改变了。服务器

//打印小票
$(document).on("click", ".printBtn", function() {
        var recordId=$(this).parents("tr").attr("data-id");
        $.commonAjax({
          type : 'post',
          url : printUrl,
          data : {diaryId:recordId},
          success : function(re) {
            //打印小票
            Main.printTicket(re.ticket);
          },
          error : function(msg, status) {
            //异步提交,刷新token,保证重复提交验证功能正常
            $.get(refreshTokenUrl, {
              r : Math.random()
            }, function(resData) {
              $('#formToken').val(resData.data);
              if(msg!='RESUBMIT_ERROR'){popWin.alert(msg);}
            }, 'json');
          }
        });    
});

参考:session

linkdom

相关文章
相关标签/搜索