GWT-RPC、Apache、Tomcat服务器数据大小检查
接下来,我想知道检查预反序列化发送到服务器的最大数据大小的正确方法,比如if request data size>X然后中止请求。重视简单性并基于对上述问题/答案的回答,我倾向于认为检查最大总体请求大小就足够了,更细粒度的检查(即字段级检查)可以推迟到反序列化后进行,但我愿意接受任何最佳实践建议 感兴趣的技术堆栈:GWT-RPC客户机服务器与ApacheTomcat前端web服务器的通信 我认为第一步是全局限制任何请求的大小(httpd.conf中的LimitRequestBody或/和其他?) 是否有更细粒度的检查,如可以为每个RPC请求设置的检查?如果是,在哪里,如何?细粒度检查在一个全局设置中带来多少安全值 为了用一个示例更具体地阐述这个问题,我们假设在同一个servlet上有以下两个RPC请求签名:GWT-RPC、Apache、Tomcat服务器数据大小检查,apache,security,gwt,tomcat,rpc,Apache,Security,Gwt,Tomcat,Rpc,接下来,我想知道检查预反序列化发送到服务器的最大数据大小的正确方法,比如if request data size>X然后中止请求。重视简单性并基于对上述问题/答案的回答,我倾向于认为检查最大总体请求大小就足够了,更细粒度的检查(即字段级检查)可以推迟到反序列化后进行,但我愿意接受任何最佳实践建议 感兴趣的技术堆栈:GWT-RPC客户机服务器与ApacheTomcat前端web服务器的通信 我认为第一步是全局限制任何请求的大小(httpd.conf中的LimitRequestBody或/和其他?)
public void rpc1(A a, B b) throws MyException;
public void rpc2(C c, D d) throws MyException;
假设我大致知道以下最大尺寸:
- a:10KB
- b:40KB
- c:1MB
- d:1KB
- rpc1:50KB
- rpc2:1 MB
非常感谢。根据我问这个问题后学到的知识,我自己的答案和策略是,直到有人能更好地向我展示:
@Override
protected String readContent(HttpServletRequest request) throws ServletException, IOException
{
final int contentLength = request.getContentLength();
// _maxRequestSize should be large enough to be applicable to all rpc calls within this servlet.
if (contentLength > _maxRequestSize)
throw new IOException("Request too large");
final String requestPayload = super.readContent(request);
return requestPayload;
}
如果大于2GB,请参阅最大请求大小
从安全角度来看,我认为这种策略在控制用户发送到服务器的数据大小方面非常合理。嗅探,嗅探,没有人想尝试我的问题!:(我不知道为什么不。