在Spring 3表单中使用List支持对象似乎很危险

时间:2015-06-21 20:02:27

标签: spring spring-mvc data-binding

似乎在Spring 3表单支持对象中使用List时,它将填充直到表单帖子中传递的索引的条目。如果恶意用户传入索引的大List值,那么可能会导致非常大的int和大量对象。

我尝试使用以下类进行表单备份对象的实验:

public class Form
{
    private List<String> values = new ArrayList<String>();

    public List<String> getValues()
    {
        return this.values;
    }
}

发布以下输入时:

<input type="text" name="form.values[10]" value="HaHa" />

结果List包含11个条目。前十个是null,而索引10的条目包含字符串“HaHa”。

想象一下如果发布以下输入会发生什么:

<input type="text" name="form.values[12147483647]" value="HaHa" />

结果List会占用相当多的内存。

如果它是bean的List而不是字符串,那似乎更糟糕。 Spring似乎用bean填充列表,而不是null值。

有没有办法避免这种情况?

我知道我可以使用Map代替List,然后使用List中的条目创建Map,但还有其他方法吗?

注意:我使用的是Spring 3.1.0。

0 个答案:

没有答案