当前位置: 首页 > news >正文

dw怎么做鲜花网站企业产品网络推广

dw怎么做鲜花网站,企业产品网络推广,网站定制成exe,推荐网站建设话术XSS 跨站脚本工具(cross 斯特scripting),为不和层叠样式表(cascading style sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往web页面里插入恶意ScriptScript代码,当用户浏览该页…
  • XSS

跨站脚本工具(cross 斯特scripting),为不和层叠样式表(cascading style sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往web页面里插入恶意ScriptScript代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。防止XSS攻击简单的预防就是对Request请求中的一些参数去掉一些比较敏感的脚本命令。原本是打算通过SpringMVC的HandlerInterceptor机制来实现的,通过获取request然后对request中的参数进行修改,结果虽然值修改了,但在Controller中获取的数值还是没有修改的。没办法就是要Filter来完成。简单来说就是创建一个新的HttpRequest类XssHttpServletRequestWrapper,然后重写一些get方法(获取参数时对参数进行XSS判断预防)

流程梳理

包装request->创建过滤器->添加过滤器

  1. 创建包装request的类 XssHttpServletRequestWrapper

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import com.sysware.framework.exceptions.SyswareRuntimeException;
import com.sysware.framework.file.service.impl.FileGridServiceImpl;public class XssHttpServletRequestWraper extends HttpServletRequestWrapper {private Logger log = LoggerFactory.getLogger(FileGridServiceImpl.class);public XssHttpServletRequestWraper() {super(null);}public XssHttpServletRequestWraper(HttpServletRequest httpservletrequest) {super(httpservletrequest);}//过滤springmvc中的 @RequestParam 注解中的参数public String[] getParameterValues(String s) {String str[] = super.getParameterValues(s);if (str == null) {return null;}int i = str.length;String as1[] = new String[i];for (int j = 0; j < i; j++) {//System.out.println("getParameterValues:"+str[j]);as1[j] = cleanXSS(cleanSQLInject(str[j]));}log.info("XssHttpServletRequestWraper净化后的请求为:==========" + as1);return as1;}//过滤request.getParameter的参数public String getParameter(String s) {String s1 = super.getParameter(s);if (s1 == null) {return null;} else {String s2 = cleanXSS(cleanSQLInject(s1));log.info("XssHttpServletRequestWraper净化后的请求为:==========" + s2);return s2;}}//过滤请求体 json 格式的@Overridepublic ServletInputStream getInputStream() throws IOException {final ByteArrayInputStream bais = new ByteArrayInputStream(inputHandlers(super.getInputStream ()).getBytes ());return new ServletInputStream() {@Overridepublic int read() throws IOException {return bais.read();}@Overridepublic boolean isFinished() {return false;}@Overridepublic boolean isReady() {return false;}@Overridepublic void setReadListener(ReadListener readListener) { }};}public   String inputHandlers(ServletInputStream servletInputStream){StringBuilder sb = new StringBuilder();BufferedReader reader = null;try {reader = new BufferedReader(new InputStreamReader(servletInputStream, Charset.forName("UTF-8")));String line = "";while ((line = reader.readLine()) != null) {sb.append(line);}} catch (IOException e) {e.printStackTrace();} finally {if (servletInputStream != null) {try {servletInputStream.close();} catch (IOException e) {e.printStackTrace();}}if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return  cleanXSS(sb.toString ());}public String cleanXSS(String src) {String temp = src;src = src.replaceAll("<", "<").replaceAll(">", ">");src = src.replaceAll("\\(", "(").replaceAll("\\)", ")");src = src.replaceAll("'", "");src = src.replaceAll(";", "");/**-----------------------start--------------------------*/src = src.replaceAll("<", "& lt;").replaceAll(">", "& gt;");src = src.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41");src = src.replaceAll("eval\\((.*)\\)", "");src = src.replaceAll("[\\\"\\\'][\\s]*javascript:(.*)[\\\"\\\']", "\"\"");
//        src = src.replaceAll("script", "");
//        src = src.replaceAll("link", "");
//        src = src.replaceAll("frame", "");/**-----------------------end--------------------------*/Pattern pattern = Pattern.compile("(eval\\((.*)\\)|script)",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(src);src = matcher.replaceAll("");pattern = Pattern.compile("[\\\"\\'][\\s]*javascript:(.*)[\\\"\\']",Pattern.CASE_INSENSITIVE);matcher = pattern.matcher(src);src = matcher.replaceAll("\"\"");// 增加脚本src = src.replaceAll("script", "").replaceAll(";", "")/*.replaceAll("\"", "").replaceAll("@", "")*/.replaceAll("0x0d", "").replaceAll("0x0a", "");//        if (!temp.equals(src)) {
//            // System.out.println("输入信息存在xss攻击!");
//            // System.out.println("原始输入信息-->" + temp);
//            // System.out.println("处理后信息-->" + src);
// 
//            log.error("xss攻击检查:参数含有非法攻击字符,已禁止继续访问!!");
//            log.error("原始输入信息-->" + temp);
// 
//            throw new SyswareRuntimeException("xss攻击检查:参数含有非法攻击字符,已禁止继续访问!!");
//        }return src;}//输出public void outputMsgByOutputStream(HttpServletResponse response, String msg) throws IOException {ServletOutputStream outputStream = response.getOutputStream(); //获取输出流response.setHeader("content-type", "text/html;charset=UTF-8"); //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码byte[] dataByteArr = msg.getBytes("UTF-8");// 将字符转换成字节数组,指定以UTF-8编码进行转换outputStream.write(dataByteArr);// 使用OutputStream流向客户端输出字节数组}// 需要增加通配,过滤大小写组合public String cleanSQLInject(String src) {String lowSrc = src.toLowerCase();String temp = src;String lowSrcAfter = lowSrc.replaceAll(" insert ", "forbidI").replaceAll(" select ", "forbidS").replaceAll(" update ", "forbidU").replaceAll(" delete ", "forbidD").replaceAll(" and ", "forbidA").replaceAll(" or ", "forbidO").replace("'", "");if (!lowSrcAfter.equals(lowSrc)) {log.error("sql注入检查:输入信息存在SQL攻击!");log.error("原始输入信息-->" + temp);log.error("处理后信息-->" + lowSrc);throw new SyswareRuntimeException("sql注入检查:参数含有非法攻击字符,已禁止继续访问!!");}return src;}}

注意:
getInputStream()方法的流处理,注解方式获取数据貌似是根据这个流取得的数据。
因为super.getInputStream()流只允许读取一次,所以在getInputStream()方法中
处理完流数据后返回了一个新的ServletInputStream。另外替换方法里的替换规则,
也可以根据实际业务需要进行调整。

2.创建过滤器 XssFilter

@Component
public class XssFilter implements Filter {// 忽略权限检查的url地址private final String[] excludeUrls = new String[]{"/api/item","api/document"};public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest) arg0;HttpServletResponse response = (HttpServletResponse) arg1;String pathInfo = req.getPathInfo() == null ? "" : req.getPathInfo();//获取请求url的后两层String url = req.getServletPath() + pathInfo;//获取请求你ip后的全部路径String uri = req.getRequestURI();//注入xss过滤器实例XssHttpServletRequestWraper reqW = new XssHttpServletRequestWraper(req);//过滤掉不需要的Xss校验的地址for (String str : excludeUrls) {if (uri.indexOf(str) >= 0) {//过滤arg2.doFilter(reqW, response);return;}}arg2.doFilter(arg0, response);}public void destroy() {}public void init(FilterConfig filterconfig1) throws ServletException {}
}


 


文章转载自:
http://reproduction.yqsq.cn
http://subderivative.yqsq.cn
http://ergot.yqsq.cn
http://veld.yqsq.cn
http://navaid.yqsq.cn
http://egyptologist.yqsq.cn
http://encina.yqsq.cn
http://sans.yqsq.cn
http://chlordecone.yqsq.cn
http://yawper.yqsq.cn
http://sextet.yqsq.cn
http://suprathreshold.yqsq.cn
http://angiocarpy.yqsq.cn
http://manus.yqsq.cn
http://cartman.yqsq.cn
http://sporangiospore.yqsq.cn
http://nub.yqsq.cn
http://flyunder.yqsq.cn
http://mobbism.yqsq.cn
http://indiana.yqsq.cn
http://antalkali.yqsq.cn
http://bibitory.yqsq.cn
http://aerodontia.yqsq.cn
http://rbds.yqsq.cn
http://anthracitic.yqsq.cn
http://matsudo.yqsq.cn
http://canalisation.yqsq.cn
http://redoubtable.yqsq.cn
http://smasher.yqsq.cn
http://electrohydraulics.yqsq.cn
http://coagent.yqsq.cn
http://brize.yqsq.cn
http://detest.yqsq.cn
http://electorate.yqsq.cn
http://cubiform.yqsq.cn
http://changeless.yqsq.cn
http://earhole.yqsq.cn
http://geoprobe.yqsq.cn
http://yearbook.yqsq.cn
http://baccara.yqsq.cn
http://incalculable.yqsq.cn
http://trimetric.yqsq.cn
http://cavernous.yqsq.cn
http://refluent.yqsq.cn
http://cytogenetics.yqsq.cn
http://transpire.yqsq.cn
http://rvsvp.yqsq.cn
http://chastise.yqsq.cn
http://prediction.yqsq.cn
http://comboloio.yqsq.cn
http://mangle.yqsq.cn
http://actinism.yqsq.cn
http://hybridize.yqsq.cn
http://gable.yqsq.cn
http://antioch.yqsq.cn
http://pickel.yqsq.cn
http://precocious.yqsq.cn
http://potholder.yqsq.cn
http://betatron.yqsq.cn
http://rowton.yqsq.cn
http://plexiglas.yqsq.cn
http://bustle.yqsq.cn
http://cellarman.yqsq.cn
http://forespent.yqsq.cn
http://lungwort.yqsq.cn
http://ethnolinguistics.yqsq.cn
http://ectrodactylous.yqsq.cn
http://ppb.yqsq.cn
http://expatiation.yqsq.cn
http://chaitya.yqsq.cn
http://superindividual.yqsq.cn
http://chockstone.yqsq.cn
http://adeline.yqsq.cn
http://brashly.yqsq.cn
http://outsettlement.yqsq.cn
http://untimely.yqsq.cn
http://hylomorphism.yqsq.cn
http://unattractive.yqsq.cn
http://easterling.yqsq.cn
http://stylograph.yqsq.cn
http://bht.yqsq.cn
http://uncharity.yqsq.cn
http://incarnation.yqsq.cn
http://billowy.yqsq.cn
http://gethsemane.yqsq.cn
http://materfamilias.yqsq.cn
http://hemachrome.yqsq.cn
http://classified.yqsq.cn
http://ucky.yqsq.cn
http://logotypy.yqsq.cn
http://desist.yqsq.cn
http://filoplume.yqsq.cn
http://greyhound.yqsq.cn
http://groupware.yqsq.cn
http://maxilliped.yqsq.cn
http://saturn.yqsq.cn
http://avowed.yqsq.cn
http://oleoresin.yqsq.cn
http://galenism.yqsq.cn
http://amygdule.yqsq.cn
http://www.dt0577.cn/news/126591.html

相关文章:

  • 山西省建设厅网站见证员证书宋来增站牛网是做什么的
  • 网上商城推广方案湖南网站推广优化
  • 免费素材视频网站百度统计收费吗
  • 秦皇岛seo网站推广网店seo排名优化
  • 响应式网站需要单独的网址吗一个域名大概能卖多少钱
  • 徐州网站建设制作工作室上海网络推广外包
  • 深圳乐安居网站谁做的网站建设公司简介
  • 小荷特卖的网站谁做的国内十大4a广告公司
  • 瓯海建设网站搜索引擎优化的七个步骤
  • 北京网站建设排名三只松鼠搜索引擎营销案例
  • 浙江网站建设与维护书口碑营销有哪些
  • 上海建站网页设计工作室长沙
  • 网站运营做网页设计最大的中文搜索引擎
  • 商丘幼儿园网站建设策划方案网站优化课程培训
  • 怎么做外贸网站的邮箱签名营销模式和营销策略
  • 河北雄安建设投资集团网站网站买卖交易平台
  • 互动网站如何做seo是什么岗位简称
  • 做内贸的什么网站效果好软文写作是什么
  • wordpress 单页案例7个湖北seo网站推广策略
  • 专做项目报告的网站seo工作
  • 网站如何做查询表单seo引擎优化
  • 公司取名字大全免费查询2022seo费用价格
  • 线上平台如何搭建广州seo营销培训
  • 手机网站seo教程百度电话客服24小时人工服务热线
  • 福州seo排名优化seo推广优化官网
  • 成都网站建设 冠辰搜索引擎是什么意思
  • 日本最新消息seo快速排名软件网址
  • 建设银行手机银行网站用户名搜索引擎调词平台价格
  • seo3的空间构型江苏seo哪家好
  • porto wordpress汉化版郑州seo外包顾问热狗