<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統計

    最新評論

    防止重復登錄請求

    過頁頭生成Token,進行請求驗證,解決Ajax請求安全問題。目前為止我做的最多的防止ajax請求攻擊的就是添加驗證碼、添加隨機Token,限制同一請求在規定時間內的最大請求數。

    下面重點說說添加隨機Token限制:
    token是為了防止表單重復提交,token 原理大致為:

    1:顯示表單的那個 action 中使用 createToken() 生成一個隨機的 token值,并存放在服務端(session或者cache中),并且傳遞一份到頁面中

    2:表單頁面使用一個隱藏表單域獲取后端傳過來的 token值,該表單頁面提交時會將此 token 值一同提交到后端

    3:在表單頁面提交到的 actioin 中使用 validateToken() 將服務端與表單隱藏域中的 token 值進行對比,如果服務端存在 token值并且與表單提交過來的值相等,證明是第一次提交。

    4:每次校驗過后服務端的 token 值會立即被清除,所以當用戶重復提交時,后面的提交校驗都再也無法通過。從而實現了防止重復提交的功能,validateToken 是在 synchronized 塊中執行的保障了多線程下的安全性。

        token 會優先存入 me.setTokenCache(ITokenCache) 指定的 TokenCache 中,如果未指定則默認使用 session 來存放

    但是這種機制是有問題的,比如我是用ajax提交表單,提交完成以后表單頁面并不刷新,然后我修改了部分數據以后再次提交頁面,那么token還是之前的那個token,后臺會以為這個為重復提交不能通過校驗,那么請求就不能完成,數據無法得到正確的處理。我認為合理的機制應該是這樣的:

    1:顯示表單的那個 action 中使用 createToken() 生成一個隨機的 token值,并且傳遞一份到頁面中

    2:表單頁面使用一個隱藏表單域獲取后端傳過來的 token值,該表單頁面提交時會將此 token 值一同提交到后端

    3:將提交過來的token值放入session或者cache中,然后執行controller中的代碼,代碼全部執行完以后,再把存入session或cache中的token值刪除掉;驗證用戶是否為重復提交只需要驗證提交過來的token是否存在于session或cache中,有則為重復提交,無則為正常提交。

    4:該邏輯應該可以寫成一個Interceptor,在需要的地方加上,或者直接設為全局攔截器都是可以的,簡單,快捷;

    posted on 2015-12-03 16:03 奮斗成就男人 閱讀(502) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产亚洲精品美女久久久久| 国产成人无码免费视频97| 一级特黄录像免费播放中文版| 亚洲一区二区三区国产精华液| 亚洲精品免费在线| 亚洲AV无码一区二区二三区软件| MM131亚洲国产美女久久| 国产一卡二卡≡卡四卡免费乱码 | 免费一级毛片在级播放| 日本久久久免费高清| 欧洲美熟女乱又伦免费视频| 久久电影网午夜鲁丝片免费| 国内精品免费麻豆网站91麻豆| 57pao国产成永久免费视频| 免费国产黄网站在线观看可以下载 | 亚洲成aⅴ人在线观看| 亚洲sss综合天堂久久久| 中文字幕亚洲综合小综合在线 | 久草免费福利资源站| 久久免费视频99| 免费看国产一级片| 亚洲天堂电影在线观看| 精品熟女少妇aⅴ免费久久| 成在线人视频免费视频| 大地资源中文在线观看免费版| 无码精品人妻一区二区三区免费看| 2022久久国产精品免费热麻豆| 亚洲高清最新av网站| 中文字幕亚洲图片| 亚洲AV无码久久精品蜜桃| 国产亚洲视频在线观看网址| 曰曰鲁夜夜免费播放视频 | 国产一级a毛一级a看免费人娇| 真实乱视频国产免费观看| 亚洲视频免费一区| 亚洲中文字幕无码久久| 99久久综合精品免费| 国产亚洲综合网曝门系列| 亚洲福利电影一区二区?| 男女午夜24式免费视频| 亚洲综合色区在线观看|