关于直播网站的搭建--第二步:关于非法请求的拦截
来源:互联网 发布:linux vi 模式 编辑:程序博客网 时间:2024/05/22 14:50
尝试过netty搭建一个聊天室,但是后面综合了一下,还是使用websocket来搭建聊天室,websocket的优势,没有过多了解,但是个人在使用过程中,感觉websocket对于客户端和服务端的通信有着十分良好的支持。本来打算写写过程的,但是想起了自己已经做了笔记了,就不多做赘述了。
这里想写写接收前端请求的时候,对于非法请求参数的拦截。
首先,我的工程项目是以ssm框架为主,前端ajax异步向后台发送请求的时候,在工程的web.xml加入拦截器,拦截所有向后台请求的地址
我的请求都是以do结尾。。。
<filter><filter-name>IllegalCharacterFilter</filter-name><filter-class>com.zzx.sys.control.filter.IllegalCharacterFilter</filter-class></filter>
<filter-mapping><filter-name>IllegalCharacterFilter</filter-name><url-pattern>*.do</url-pattern></filter-mapping>
然后url请求就会转发到我们的过滤器中了
/** * 非法字符判断过滤器 * @author zzxin9 * */public class IllegalCharacterFilter implements Filter {private static String IllegalChars = "";@Overridepublic void destroy() {// TODO Auto-generated method stub}@Overridepublic 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(); if(isNumber(name)){ continue; } //得到参数对应值 String[] value = req.getParameterValues(name); for (int i = 0; i < value.length; i++) { sql = sql + value[i]; } } if (sqlValidate(sql)) { Result result = new Result(); result.setCode(1);result.setMessage("请求参数中含有非法字符");JsonUtil.outputJson(res, result); } else { chain.doFilter(request,response); } }public boolean isNumber(String name){char[] charArray = name.toCharArray();for(int i=0;i<charArray.length;i++){if(!Character.isDigit(charArray[i])){return false;}}return true;}@Overridepublic void init(FilterConfig config) throws ServletException {IllegalChars = PropsUtil.getProperty("IllegalChars");}//效验 protected static boolean sqlValidate(String str) { str = str.toLowerCase();//统一转为小写 if(IllegalChars!=null&&!"".equals(IllegalChars)){ String[] badStrs = IllegalChars.split("\\|"); for (int i = 0; i < badStrs.length; i++) { if (str.indexOf(badStrs[i]) >= 0) { return true; } } } return false; } }
return true就继续转发请求,不然就拦截了下来了,这样一来,可以有效的防止sql注入之类的问题
阅读全文
0 0
- 关于直播网站的搭建--第二步:关于非法请求的拦截
- 关于直播网站的搭建--第一步:获取直播源
- 关于Struts2拦截Flex请求的问题
- 关于“(”:“::”右边的非法标记
- 关于 http 请求与响应的几个步奏
- 关于快速提高网站排名的26步
- 关于Unix第二卷60页的mq_open 函数的参数非法问题
- 关于Handler的拦截
- 关于视频直播的技术
- 关于直播的一些资料
- 关于直播技术的转载
- 关于直播的iOS开发
- 一些关于直播的术语
- 关于直播的一些博客
- 关于网站搭建的学习探索(
- 突然的想法--关于搭建网站
- 关于-非法的xml字符
- 关于防止非法访问action的措施
- wifi配置工具iw源码解析
- bzoj 2796: [Poi2012]Fibonacci Representation 记忆化搜索
- 欢迎使用CSDN-markdown编辑器
- jsp中EL 表达式的用法
- 2017 Clion PyCharm激活码
- 关于直播网站的搭建--第二步:关于非法请求的拦截
- Flume架构以及应用介绍
- MySql的存储引擎(表类型)
- ALV调用的几个标准函数
- SQL state [null]; error code [17004]; 无效的列类型
- Linux——VIM中代码的折叠和打开
- c#开启/停止Windows服务
- 目标检测Faster_r_cnn代码的使用(python+caffe版本)
- oracle 配合mybatis example分页