栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Jersey 2中修改QueryParam和PathParam

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Jersey 2中修改QueryParam和PathParam

我在下面添加了一个适用于Jersey 2.x的过滤器。但是,它没有对cookies进行XSS修复,因为我还没有找到修改它们的方法。

需要注意的重要一点是,这需要与POJO属性上的@SafeHtml结合使用,以清理这些值。

@PreMatchingpublic class XSSFilter implements ContainerRequestFilter{        @Override    public void filter( ContainerRequestContext request )    {        cleanQueryParams( request );        cleanHeaders( request.getHeaders() );    }        private void cleanQueryParams( ContainerRequestContext request )    {        UriBuilder builder = request.getUriInfo().getRequestUriBuilder();        MultivaluedMap<String, String> queries = request.getUriInfo().getQueryParameters();        for( Map.Entry<String, List<String>> query : queries.entrySet() )        { String key = query.getKey(); List<String> values = query.getValue(); builder.replaceQueryParam( key ); for( String value : values ) {     builder.replaceQueryParam( key, Utils.stripXSS( value ) ); }        }        request.setRequestUri( builder.build() );    }        private void cleanHeaders( MultivaluedMap<String, String> headers )    {        for( Map.Entry<String, List<String>> header : headers.entrySet() )        { String key = header.getKey(); List<String> values = header.getValue(); List<String> cleanValues = new ArrayList<String>(); for( String value : values ) {     cleanValues.add( Utils.stripXSS( value ) ); } headers.put( key, cleanValues );        }    }}

stripXSS函数如下:

public static String stripXSS( String value ){    return stripXSS( value, Whitelist.none() );}public static String stripXSS( String value, Whitelist whitelist ){    if( StringUtils.isBlank( value ) )        return value;    // Use the ESAPI library to avoid enpred attacks.    value = ESAPI.enprer().canonicalize( value );    // Avoid null characters    value = value.replaceAll("", "");    // Clean out HTML    document.OutputSettings outputSettings = new document.OutputSettings();    outputSettings.escapeMode( EscapeMode.xhtml );    outputSettings.prettyPrint( false );    value = Jsoup.clean( value, "", whitelist, outputSettings );    return value;}

还更新了原始帖子:http : //prehustler.org/blog/jersey-cross-site-
scripting-xss-filter-for-java-web-apps/



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/496406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号