Webx中的安全考虑

简介:

1、默认拦截器

即使你不加说明,BasicRequestContext也总是会启用一个默认的interceptor实

现:ResponseHeaderSecurityFilter。这个类实现了下列功能:

• 避免header name和value中出现CRLF字符 ── 在header中嵌入CRLF(回车换行)字符

是一种常见的攻击手段。攻击者嵌入CRLF以后,使服务器对HTTP请求发生错误判断,从而执行攻击者的恶意代码。事实上,现在的servlet引擎如tomcat已经可以防御这种攻击。但作为框架,并不能依赖于特定的servlet引擎,所以加上这个额外的安全检查,确保万无一失。

• 将status message用HTML entity编码重写 ── 通常status message会被显示在HTML页面中。攻击者可以利用这一点在页面中嵌入恶意代码。将status message以HTML entity编码重写以后,就可以避免这个问题。

• 限制cookie的总大小 ── 过大的cookie可能使WEB服务器拒绝响应请求。攻击者同样可以利用这一点使用户无法正常访问网站。限制cookie的总大小可以部分地解决这种危机。

如果需要,你可以对ResponseHeaderSecurityFilter指定一些参数。

例 7.2. 配置ResponseHeaderSecurityFilter(/WEB-INF/webx.xml)

<request-contexts:interceptors

xmlns="http://www.alibaba.com/schema/services/request-contexts/basic/interceptors">

<interceptor class="...Interceptor1" />

<interceptor class="...Interceptor2" />

<response-header-security-filter maxSetCookieSize="5K" />

</request-contexts:interceptors>

2、过滤参数

出于安全的考虑,<parser>还支持对输入参数进行过滤。请看示例:

例 7.31. 配置过滤参数

 
  1. <parser> 
  2.  
  3. <filters> 
  4.  
  5. <parser-filters:uploaded-file-whitelist extensions="jpg, gif, png" /> 
  6.  
  7. </filters> 
  8.  
  9. </parser> 

上面的配置将会禁止文件名后缀不在列表中的文件被上传到服务器上。如果做得更好一点,你甚至可以对上传文件进行病毒扫描。

目前,<parser>支持两种过滤器接口:ParameterValueFilter和UploadedFileFilter。前者用来对普通的参数值进行过滤(例如排除可能造成攻击的HTML代码);后者用来对上传文件的file item对象进行过滤,就像刚才的uploaded-file-whitelist的例子。

3、增加Fasttext的宏

在webx-component-and-root.xml中配置

 
  1. <!-- Template渲染服务。 --> 
  2.     <services:template 
  3.         xmlns="http://www.alibaba.com/schema/services/template/engines" 
  4.         searchExtensions="true"> 
  5.         <velocity-engine templateEncoding="GBK" 
  6.             strictReference="false" path="/${component}/templates"> 
  7.             <global-macros> 
  8.                 <name>global/*Macros.vm</name> 
  9.                 <name>global/*macros.vm</name> 
  10.                 <name>classpath/unictemplate/macros.vm</name> 
  11.             </global-macros> 
  12.             <plugins> 
  13.                 <!-- <vm-plugins:escape-support defaultEscape="html"> 
  14.                     <vm-plugins:noescape> 
  15.                         <vm-plugins:if-matches pattern="^control\." /> 
  16.                         <vm-plugins:if-matches pattern="^screen_placeholder" /> 
  17.                         <vm-plugins:if-matches pattern="^stringEscapeUtil\.escape" /> 
  18.                         <vm-plugins:if-matches pattern="^csrfToken\.(get)?hiddenField" /> 
  19.                     </vm-plugins:noescape> 
  20.                 </vm-plugins:escape-support> --> 
  21.                 <vm-plugins:fasttext-support /> 
  22.                 <vm-plugins:renderable-support /> 
  23.             </plugins> 
  24.         </velocity-engine> 

注意:

(1)b2b使用的是fasttext解决方案,而不用eacape,所以添加<vm-plugins:fasttext-support /> 

(2)为了解决二房库的宏引用问题,使用  <name>classpath/unictemplate/macros.vm</name> 进行配置

顺便说说资源的load,在webx-component-and-root.xml中配置的资源,例如:

 
  1. <global-macros> 
  2.                 <name>global/*Macros.vm</name> 
  3.                 <name>global/*macros.vm</name> 
  4.                 <name>classpath/unictemplate/macros.vm</name> 
  5.             </global-macros> 

他们都是在中相应的classloader去加载的,这些loader在resources.xml中进行了说明,比如:res-loaders:classpath-loader, res-loaders:webapp-loader



本文转自 zhouhaipeng 51CTO博客,原文链接:http://blog.51cto.com/tianya23/773226,如需转载请自行联系原作者


相关文章
|
XML JSON Java
|
Web App开发 前端开发 Java
|
前端开发 JavaScript Java
|
XML Java 数据格式
webservice cxf与spring详解
wsdl文档结构图 JDK方式开发 server端代码 package server; import javax.jws.WebMethod; import javax.jws.WebService; /**  *   *   * SEI:Service Endpoint Interface 发布的服务接口  *  */ @WebService public interface He
2182 0
|
前端开发
Webx系列
由于新近换了工作,现在的项目开发需要用到Webx框架,而网上关于Webx的介绍又少之又少(其实,官方文档已经说明的非常非常详细了。),所以打算把工作中对于Webx使用的心得和理解做个系列,以供有需要的人进行参考。目前的打算是先讲实用,待以后自己水平提高了之后再试着分析源码。最后:希望自己能坚持下来。 Webx系列之创建Webx应用 Webx系列之文件上传 Webx系列之文件下载 W
1743 0
|
Java 应用服务中间件 开发工具
Webx系列之创建Webx工程
           本文参考文章为Webx官方说明文档。网址在此:http://www.openwebx.org/docs/firstapp.html    准备工作                                安装JDK WebX需要JDK1.5以上的版本。JDK的下载及安装请自行百度。 安装和配置Maven Webx需要Maven2及以上版本。下载
1790 0