2013-07-16 50 views
0

我注意到,即使作为匿名用户,在我第一次访问网页时创建了shiro会话(并插入到我的db中)。成功登录后,会话记录将更新为适当的属性。Shiro会话创建泛滥

现在,我想“压力测试”的主网页网址:

curl -s "http://myapp.com?[1-1000]" 

,当我算创建的会话是一样多的循环我的恐惧终于成真。

所以这里的问题是,无论如何,我可以避免由网络爬虫或垃圾邮件发送者创建会话创建洪水吗?

回答

1

这个工作对我来说,只有在登录时,yayy允许会话创建:

/login = authc 
/logout = noSessionCreation, logout 
/** = noSessionCreation, anon 
+0

我发现它怀疑你给了你自己的答案后,我给你的答案,允许你写你的代码示例:( –

+0

@LesHazlewood:你好作者,只是想澄清,我的答案是提前2天回答:SO中的答案没有按日期排序,所以这可能会导致错误的假设。 – bertie

+0

我的歉意!谢谢澄清! –

1

接受的解决方案将抛出一个异常(如预期),如果一个开发人员(或软件框架/库)试图创建在这些页面上进行会话。这通常是一件好事,因为它会在开发过程中暴露出意外的会话使用情况,确保开发人员(或您使用的Web框架)在他们不应该创建会话时不会创建会话。

如果你正在使用JSP,你也很可能需要设置

<%@ page session="false" %> 

在JSP的顶部,以确保标签库或Servlet容器本身不尝试使用会话(您如果没有你的了解,你会惊奇地发现这种情况的发生频率。

+0

我很抱歉,我忘记提及我使用自定义和本机会话,所以它的不受网络会话的影响,幸运的是,在这种情况下,我使用的是freemarker而不是JSP,谢谢 – bertie

+0

@AlbertKam听起来不错 - 所以是的,我认为在你的案例中使用noSessionCreation过滤器是最好的选择。 –