在跟进这个GWT-RPC的问题(和答案#1)重。 场大小检查 ,我想知道,检查前反序列化发送到服务器的最大数据大小的正确方法,像如果请求数据大小> X,则中止请求 。 估值的简单性和基于对上述问题/答案的答案,我倾向于相信检查最大总请求大小就足够了,更细致的检查(即实地检查)可能会被推迟到反序列化后,但我愿意接受任何最佳实践的建议。
感兴趣的技术堆栈:与Apache-Tomcat的前端Web服务器GWT-RPC客户端服务器通信。
我想的第一步骤将是全局限制任何请求的大小(LimitRequestBody在httpd.conf或/和其它?)。
是否有细粒度喜欢的事,可以为每个RPC请求进行设置检查? 如果是的话在哪里,怎么样? 多少安全值做更细的晶粒检查带来了一个全局设置?
为了用一个例子更具体框架的问题,让我们假设我们有同一个servlet以下两个RPC请求签名:
public void rpc1(A a, B b) throws MyException;
public void rpc2(C c, D d) throws MyException;
假设我大约知道以下最大尺寸:
- 答:10 KB
- B:40 KB
- C:1 M B
- d:1 KB
然后,我希望下面的最大尺寸:
- RPC1:50 KB
- RPC2:1 MB
在这个例子中的情况下,我的问题是:
- 凡/如何配置任何请求的最大尺寸 - 即,1 MB在我上面的例子吗? 我相信这是在httpd.conf LimitRequestBody但不是100%肯定它是否是实现这一目的的唯一参数。
- 如果可能的话,哪里/如何配置每servlet的最大尺寸-即在我的servlet任何RPC是1 MB最大尺寸?
- 如果可能的话,哪里/如何配置每个RPC请求/检查最大尺寸-即,最大RPC1大小为50 KB,最大RPC2大小为1 MB?
- 如果可能的话,其中/如何配置每RPC请求参数/检查最大尺寸- 即 ,是10 KB,b为40 KB,c为1 MB,和d是1 KB。 我怀疑这是有实际意义的做,反序列化后,不是吗?
- 对于基于成本/效益的实际用途,一般建议是什么级别的反序列化预检的 - 1.全球性的,2。servlet中,3 RPC,4,对象的说法? 换句话说,什么是大致一方面成本的复杂性和对上述各反序列化前的水平检查的另一方面的附加值?
感谢很多提前。