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

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

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

    風(fēng)人園

    弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
    數(shù)據(jù)加載中……

    Java防止非法和重復(fù)表單提交的分析(ZT)

    第一,對于不支持POST的,可以簡單的使用如下代碼
    if ("POST".equals(request.getMethod())) {
      
    // 正常進(jìn)行
    }
    else{
      
    // 異常請求
      out.print("異常訪問");
      
    return;
    }

    如果是servlet, 可以將doGet方法直接返回,不進(jìn)行處理就行了
    public void doGet(HttpServletRequest request, HttpServletResponse response) {
      
    return;
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) {
      
    // 正常進(jìn)行操作
    }

    還可以采用特定的標(biāo)志來區(qū)分,比如
    <form><input type="hidden" name="action" value="insert"/></form> 

    程序里這樣判斷
    if ("POST".equals(request.getMethod()) && ("insert".equals(request.getParameter("action")))) {
      
    // 正常進(jìn)行
    }
    else{
      
    // 異常請求
      out.print("異常訪問");
      
    return;
    }

    第二,判斷提交的來源referer,代碼如下
    if ("POST".equals(request.getMethod())) {
      String referer 
    = request.getHeader("referer");
      
    if (referer == null || !referer.startsWith("http://"+request.getServerName())) {
        
    // 非法來源
        return;
      }

      
    // 正常進(jìn)行
    }
    else{
      
    // 異常請求
      out.print("異常訪問");
      
    return;
    }

    第三 防止重復(fù)提交的hashCode
    在表單顯示頁面
      //生成一個(gè)formhash,算法可以自己定,不隨便重復(fù)就可以了
      String formhash = MD5.encode(Long.toString(new Date().getTime()));
      
    //讀取當(dāng)前session里面的hashCode集合,此處使用了Set,方便判斷。
      Set<String> formhashSession = (Set<String>) session.getAttribute("formhashSession");
      
    if (formhashSession == null{
        formhashSession 
    = new HashSet<String>();
      }

      
    // 檢測重復(fù)問題
      while (formhashSession.contains(formhash)) {
        formhash 
    = MD5.encode(Long.toString(new Date().getTime()));
      }

      
    // 保存到session里面
      formhashSession.add(formhash);
      
    // 保存
      session.setAttribute("formhashSession", formhashSession);

    表單里面增加如下字段
    <input type="hidden" name="formhash" id="formhash" value="<%=formhash%>" /> 

    在表單提交頁面進(jìn)行如下處理
        // 拿到表單的formhash
        String formhash = upload.getParameter("formhash");
        
    // 拿到session里面的集合
        Set<String> formhashSession = (Set<String>) session.getAttribute("formhashSession");
        
    // 如果沒有,則是重復(fù)提交,或者非法提交
        if (formhashSession == null || !formhashSession.contains(formhash)) {
          out.println(
    "請不要重復(fù)提交!");
          
    return;
        }

        
    // 下面進(jìn)行其它的操作
        
    // 
        
    // 最后,如果操作成功,從session里面把這個(gè)formhash 刪掉!
        
    // 以免用戶少填寫了某個(gè)字段,造成表單無法再次提交
        formhashSession.remove(formhash);
        session.setAttribute(
    "formhashSession", formhashSession);

    以上內(nèi)容為本人原創(chuàng)內(nèi)容,如要轉(zhuǎn)載,請保留完整信息。并注明來源為http://blog.csdn.net/或http://www.Java2000.net,

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=2119298

    posted on 2008-02-29 16:42 風(fēng)人園 閱讀(486) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲精品无码永久中文字幕| 亚洲欧洲精品一区二区三区| 久久精品乱子伦免费| 色婷婷六月亚洲婷婷丁香| 成全视频免费高清 | 最近最好的中文字幕2019免费| 亚洲av无码专区在线电影 | 亚洲国产另类久久久精品| 免费无码又爽又刺激聊天APP| 亚洲a∨无码精品色午夜| 亚洲国产精品一区二区久久hs| 成人免费无遮挡无码黄漫视频| 91精品成人免费国产| 亚洲不卡影院午夜在线观看| 亚洲一区二区三区无码中文字幕| 国产h肉在线视频免费观看| 国产亚洲精品国产福利在线观看| 亚洲成色999久久网站| 麻豆国产入口在线观看免费| 久久精品免费观看| 亚洲高清乱码午夜电影网| 亚洲av永久无码精品国产精品| 日本免费人成黄页网观看视频| 最近高清中文字幕免费| h片在线播放免费高清| 亚洲色精品VR一区区三区| 亚洲av无码一区二区三区网站 | 免费一级毛片在级播放| 亚洲电影免费观看| 国产在线观看免费av站| 国产精品亚洲专区无码唯爱网| 亚洲欧洲另类春色校园小说| 国产亚洲综合网曝门系列| 国产一级一片免费播放i| 国产在线观看麻豆91精品免费| 国产性生大片免费观看性| 国产成人综合亚洲| 亚洲欧美黑人猛交群| 亚洲国产精品成人精品小说| 久久久久亚洲AV成人无码| 国产亚洲情侣一区二区无|