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

网站个别页面做seoRelive WordPress 主题

网站个别页面做seo,Relive WordPress 主题,万网域名安全锿,湖南长沙旅游攻略自助游XSS攻击是什么XSS攻击全称跨站脚本攻击#xff0c;是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆#xff0c;故将跨站脚本攻击缩写为XSS#xff0c;XSS是一种在web应用中的计算机安全漏洞#xff0c;它允许恶意web用户将代码植入到提供给其它用户使用的页面中…XSS攻击是什么XSS攻击全称跨站脚本攻击是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆故将跨站脚本攻击缩写为XSSXSS是一种在web应用中的计算机安全漏洞它允许恶意web用户将代码植入到提供给其它用户使用的页面中。简而言之就是作恶用户通过表单提交一些前端代码如果不做处理的话这些前端代码将会在展示的时候被浏览器执行。如何避免XSS攻击解决XSS攻击可以通过后端对输入的数据做过滤或者转义使XSS攻击代码失效。代码实现对于过滤XSS脚本的代码通过搜索引擎可以搜索到很多但似乎都不是那么全面。基本上都是只能过滤querystring(表单类型)类型的入参而不能过滤json类型的入参。其实在现在的开发中更多的是使用json类型做数据交互。下面就直接贴代码了新建XssAndSqlHttpServletRequestWrapper.javaimport org.apache.commons.lang3.StringUtils;import org.apache.commons.text.StringEscapeUtils;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;/*** author Happy* 防止XSS攻击*/public class XssAndSqlHttpServletRequestWrapper extends HttpServletRequestWrapper {private HttpServletRequest request;public XssAndSqlHttpServletRequestWrapper(HttpServletRequest request) {super(request);this.request request;}Overridepublic String getParameter(String name) {String value request.getParameter(name);if (!StringUtils.isEmpty(value)) {value StringEscapeUtils.escapeHtml4(value);}return value;}Overridepublic String[] getParameterValues(String name) {String[] parameterValues super.getParameterValues(name);if (parameterValues null) {return null;}for (int i 0; i parameterValues.length; i) {String value parameterValues[i];parameterValues[i] StringEscapeUtils.escapeHtml4(value);}return parameterValues;}}这里重写了两个方法getParameter和getParameterValuesgetParameter方法是直接通过request获得querystring类型的入参调用的方法。如果是通过springMVC注解类型来获得参数的话走的是getParameterValues的方法。大家可以通过打印一个输出来验证一下。StringEscapeUtils.escapeHtml4这个方法来自Apache的工具类maven坐标如下org.apache.commonscommons-text1.4新建XssFilter.java过滤的代码写完了下面就是在一个filter中应用该代码。import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Primary;import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;import org.springframework.stereotype.Component;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import javax.servlet.http.HttpServletRequest;import java.io.IOException;/*** author Happy*/WebFilterComponentpublic class XssFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest req (HttpServletRequest) request;XssAndSqlHttpServletRequestWrapper xssRequestWrapper new XssAndSqlHttpServletRequestWrapper(req);chain.doFilter(xssRequestWrapper, response);}Overridepublic void destroy() {}/*** 过滤json类型的* param builder* return*/BeanPrimarypublic ObjectMapper xssObjectMapper(Jackson2ObjectMapperBuilder builder) {//解析器ObjectMapper objectMapper builder.createXmlMapper(false).build();//注册xss解析器SimpleModule xssModule new SimpleModule(XssStringJsonSerializer);xssModule.addSerializer(new XssStringJsonSerializer());objectMapper.registerModule(xssModule);//返回return objectMapper;}}过滤表单类型的代码已经完成(xssObjectMapper这个是后面过滤json类型才用到的)。下面来实现过滤json类型的代码新建XssStringJsonSerializer.java代码如下import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import org.apache.commons.text.StringEscapeUtils;import java.io.IOException;public class XssStringJsonSerializer extends JsonSerializer {Overridepublic Class handledType() {return String.class;}Overridepublic void serialize(String value, JsonGenerator jsonGenerator,SerializerProvider serializerProvider) throws IOException {if (value ! null) {String encodedValue StringEscapeUtils.escapeHtml4(value);jsonGenerator.writeString(encodedValue);}}}这里是通过修改SpringMVC的json序列化来达到过滤xss的目的的。其实也可以通过第一种方法重写getInputStream方法来实现这里我就不做演示了(通过json类型传参会走getInputStream方法通过重写该方法打印输出可以证明)。测试TestController.javaimport org.springframework.web.bind.annotation.*;import org.springframework.web.multipart.MultipartFile;/*** author Happy*/RestControllerRequestMapping(value /test)public class TestController {PostMapping(value /xss)public Object test(String name) {System.out.println(name);return name;}PostMapping(value /json)public Object testJSON(RequestBody Param param) {return param;}GetMapping(value /query)public Object testQuery(String q){return q;}PostMapping(value /upload)public Object upload(MultipartFile file){System.out.println(file.getOriginalFilename());return OK;}}下面通过postman测试下效果可以看到js代码已经经过转义。转义过后的代码即使前端读取过去了也不会被浏览器执行的。
http://www.zqtcl.cn/news/549239/

相关文章:

  • 家居小程序源码下载自动seo系统
  • 动态效果的网站建设技术老闵行是指哪里
  • 电商网站开发面临的技术问题做闪图的网站
  • 怎么查看网站开发语言的类型东莞哪些地方是风险区
  • 不用购买域名做网站广州网站建设培训学校
  • 城市轨道建设规范下载网站古网站典模板
  • 关于实验室建设的英文网站深圳企业网站制作公司怎样
  • wordpress全站背景音乐中山网站搜索排名
  • 搭建网站的过程透明主题wordpress
  • 丰台网站建设公司电话深圳微信商城网站设计公司
  • 做淘宝要用的网站吗上海微信网站
  • 佛山高端网站制作公司wordpress 发送邮件插件
  • 类似站酷的设计类网站网站建设需要待摊吗
  • 用php做视频网站在学做网站还不知道买什么好
  • wordpress培训类网站网站建设 好
  • 网站开发需要2个月吗网站建设案例精粹
  • 网站建设项目职责营销型网站建设五大内容
  • 建设工程监理招标网站W做网站
  • 网站建设与维护教学课件网站上线前做环境部署
  • 信誉好的网站建设做网站成为首富的外国人
  • 常州网站制作市场湖北省荆门市城乡建设网站
  • 泉州网站制作运营商专业北京软件公司招聘信息查询
  • 车床加工东莞网站建设网站建设教学改进
  • 深圳专业做网站建设西安网站建设有限公司
  • wordpress 一键建站wordpress子主题style
  • 昆明设计网站怎么做网络广告
  • 2018什么做网站深圳企业网站设
  • 北京旅游外贸网站建设博客集成wordpress
  • 中国最好的建设网站哪些网站教你做系统
  • 自己做网站别人怎么看见网站建设办公