国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

Ajax請求和Filter配合案例解析

2024-09-01 08:27:33
字體:
來源:轉載
供稿:網友

案例引入

現在有這樣一個問題,就是在提交大片文字評論的時候,前臺拿到數據之后給后臺發送ajax請求,然后后臺有一個防止SQL注入的Filter,這個Filter得到這個前臺傳過來的數據之后,進行合法性校驗,如果沒有校驗成功,那么要跳轉到error.jsp頁面進行顯示錯誤信息。現在讓我們看看怎么實現這個需求。

思路一:請求轉發實現

ajax請求

$.ajax({method:'post',url:'servlet/DemoServlet',dataType:'json',data:{'userName':userName,'passWord':passWord,'text': text},success:function(data){//成功之后的邏輯},error:function(){//錯誤之后的邏輯}});

防止SQL注入Filter

package com.yiyexiaoyuan.filter;import java.io.IOException;import java.util.Enumeration;import javax.security.auth.message.callback.PrivateKeyCallback.Request;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import net.sf.json.JSONObject;//過濾sql關鍵字的Filter public class SQLFilter implements Filter{public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException{HttpServletRequest req = (HttpServletRequest) request;HttpServletResponse res = (HttpServletResponse) response;// 獲得所有請求參數名Enumeration params = req.getParameterNames();String sql = "";while (params.hasMoreElements()){// 得到參數名String name = params.nextElement().toString();// System.out.println("name===========================" + name +// "--");// 得到參數對應值String[] value = req.getParameterValues(name);for (int i = 0; i < value.length; i++){sql = sql + value[i];} }System.out.println("提交方式:"+req.getMethod());System.out.println("被匹配字符串:" + sql);if (sqlValidate(sql)){//請求轉發req.getRequestDispatcher("error.jsp").forward(req, res); }else{String request_uri = req.getRequestURI(); chain.doFilter(request, response);}}// 校驗protected static boolean sqlValidate(String str){str = str.toLowerCase();// 統一轉為小寫// String badStr = "and|exec";String badStr = "'|and|exec|execute|insert|select|delete|update|count|drop|chr|mid|master|truncate|char|declare|sitename|net user|xp_cmdshell|or|like|;|--|+|,|*|/";/** String badStr =* "'|and|exec|execute|insert|create|drop|table|from|grant|use|group_concat|column_name|"* +* "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|*|"* + "chr|mid|master|truncate|char|declare|or|;|-|--|+|,|like|//|/|%|#";*/// 過濾掉的sql關鍵字,可以手動添加String[] badStrs = badStr.split("http://|");for (int i = 0; i < badStrs.length; i++){if (str.indexOf(badStrs[i]) != -1){System.out.println("匹配到:" + badStrs[i]);return true;}}return false;}public void init(FilterConfig filterConfig) throws ServletException{// throw new UnsupportedOperationException("Not supported yet.");}public void destroy(){// throw new UnsupportedOperationException("Not supported yet.");}}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 抚顺市| 新闻| 邵阳市| 武夷山市| 巨鹿县| 花垣县| 临泉县| 涿鹿县| 晋江市| 锡林浩特市| 上犹县| 宣威市| 浮山县| 伊吾县| 饶河县| 文安县| 金湖县| 肇源县| 柯坪县| 蒙城县| 盘锦市| 宣化县| 京山县| 宜宾县| 德化县| 西乌| 招远市| 大足县| 汾西县| 奈曼旗| 滨海县| 南投市| 江孜县| 无极县| 左权县| 合作市| 铁力市| 金溪县| 建始县| 东源县| 理塘县|