网关防XSS过滤器的设计是什么

技术网关防XSS过滤器的设计是什么本篇文章为大家展示了网关防XSS过滤器的设计是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1. 如何防止XSS攻击?XSS的防御基本上,不

本文向您展示了网关抗XSS滤波器的设计。内容简洁易懂,一定会让你眼前一亮。希望通过这篇文章的详细介绍,你能有所收获。

基本上

1. 如何防止XSS攻击?

XSS的防御就是加强用户输入的验证,输出时翻译内容。XSS问题需要多种方案的配合使用:

前端做表单数据合法性校验(这是第一层保护,虽然“君子不是小人”,但肯定是有的)。

后端做数据过滤与替换(总有人会通过工具输入一些非法数据访问你的服务器)。

持久层数据编码规范,如使用Mybatis,看Mybatis中的“$”和“#”,不要乱用,了解这些小细节。

00-1010,使用Spring AOP横切所有API条目看似容易实现,但RESTful API设计并不是统一的输入格式,包括RequestParam对于GET请求的输入和RequestBody对于POST请求的输入,因此很难统一处理不同的输入,所以这不是一个好办法。关于RESTful接口的设计,请参考如何设计一个好的RESTfulAPI。

从10到1010请求的JSON数据必须由HttpMessageConverter转换。一般来说,我们可以通过添加Mapping jackson 2 HTTPMessageConverter和重写readInternal方法来修改Jackson的序列化和反序列化过程,并添加过滤xss代码。并在mapping Jackson 2 httpmessageconverter中注册,那么json请求的xss问题就可以解决了,但是这种方法只能过滤两种请求参数:Content-Type是form form(application/x-www-form-URL encoded)和json(application/json),而没有办法处理GET请求,所以不是很好的解决方案。(具体方法请参考github.com/yangc91-SpringMvc.保卫XSS的做法)

网关防XSS过滤器的设计是什么

图-HttpMessageConverter转换示意图。

@覆盖

protectedObjectreadInternal(类?clazz,Httpinputmessageinputmessage)throwSioException,HttpMessageNotReadableException {

returnsuper.readInternal(clazz,inputMessage);

}

1.1 Spring AOP

,另一个问题是调用request.getInputStream()读取流,只能读取一次。调用责任链中的后续筛选器将导致request.getInputStream()的内容为空。即使这是过滤器责任链中的最后一个过滤器,程序在运行到HttpMessageConverter时也会抛出一个异常,因此它需要通过装饰器完成流的多次读取.

ESAPI是一个免费的开源Web应用安全控制组件,可以帮助开发者降低Java Web应用中的应用风险。ESAPI是OWASP组织的开源项目,主页为http:/

/www.owasp.org/index.php/ESAPI。借助ESAPI可以很方便地替换和过滤掉非法参数,同时防止SQL注入。

2. 如何实现对请求参数的修改过滤

对所有后台请求使用filter过滤,在filter中将request中有隐患的关键字过滤掉,由于request中值不能直接修改,所以对request使用装饰器模式(Decorator)

在过滤器中对ServerWebExchange进行装饰,ServerWebExchange命名为服务网络交换器,存放着重要的请求-响应属性、请求实例和响应实例等等,有点像Context的角色。具体的过滤器设计如下:

public class ServerWebExchangeModifyFilter implements WebFilter {
	@Override
	public Mono<Void> filter(final ServerWebExchange exchange, final WebFilterChain chain) {
		// throw UnsupportedOperationException, 安全考虑
		// request.getHeaders().add("x", "1");
		ServerWebExchangeDecorator decorator = new XssServerWebExchangeDecorator(exchange);
		return chain.filter(decorator);
	}
}

ServerWebExchange装饰器为:

public class XssServerWebExchangeDecorator extends ServerWebExchangeDecorator {
	private final ServerHttpRequestDecorator requestDecorator;
	public XssServerWebExchangeDecorator(ServerWebExchange delegate) {
		super(delegate);
		this.requestDecorator = new XssServerHttpRequestDecorator(delegate.getRequest());
	}
	@Override
	public ServerHttpRequest getRequest() {
		return this.requestDecorator;
	}
}

请求装饰器如下:

public class XssServerHttpRequestDecorator extends ServerHttpRequestDecorator {
	private final static HtmlFilter HTML_FILTER = new HtmlFilter();
	private MultiValueMap<String, String> queryParams;
	private HttpHeaders headers;
	public XssServerHttpRequestDecorator(ServerHttpRequest delegate) {
		super(delegate);
		this.queryParams = new HttpHeaders();
		this.queryParams.addAll(filterQueryParams(delegate.getQueryParams()));
		this.headers = new HttpHeaders();
		this.headers.addAll(filterHttpHeaders(delegate.getHeaders()));
	}
	@Override
	public MultiValueMap<String, String> getQueryParams() {
		return this.queryParams;
	}
	@Override
	public HttpHeaders getHeaders() {
		return this.headers;
	}
	private MultiValueMap filterQueryParams(MultiValueMap<String, String> queryParams) {
		// ...自定义过滤逻辑
		return encodeQueryParams;
	}
	private MultiValueMap filterHttpHeaders(HttpHeaders httpHeaders) {
		// ...自定义过滤逻辑
		return encodeHttpHeaders;
	}
}

上述内容就是网关防XSS过滤器的设计是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/38494.html

(0)

相关推荐

  • Python面向对象编程的核心概念知识点是什么

    技术Python面向对象编程的核心概念知识点是什么这篇文章给大家介绍Python面向对象编程的核心概念知识点是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。面向对象编程的核心概念:封装,抽象,多

    攻略 2021年11月23日
  • 导致JVM物理内存消耗大的Bug是怎么样的

    技术导致JVM物理内存消耗大的Bug是怎么样的导致JVM物理内存消耗大的Bug是怎么样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。概述最

    攻略 2021年10月23日
  • nginx.pid打开失败怎么办

    技术nginx.pid打开失败怎么办本篇内容介绍了“nginx.pid打开失败怎么办”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月11日
  • 如何打补丁PSU

    技术如何打补丁PSU这篇文章主要讲解了“如何打补丁PSU”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何打补丁PSU”吧!首先说一下下载补丁和最新opatch的方法:都

    攻略 2021年11月15日
  • flask中orm增删改查操作

    技术flask中orm增删改查操作 flask中orm增删改查操作flask中orm增删改查操作
    一、创建表
    # model.py
    import datetime
    from sqlalchemy imp

    礼包 2021年11月7日
  • 抖音刷粉丝网站,如何提高抖音点赞播放量

    技术抖音刷粉丝网站,如何提高抖音点赞播放量我们都知道在抖音上发布的作品,点赞量越多就越容易上热门,因为点赞量多了,抖音官方就会认为有很多人喜欢你的作品,所以就会推荐给更多人观看,也就是你们经常说的热门。所以说,点赞是作品

    测评 2021年10月26日