【问题标题】:Shiro session creation floodingShiro 会话创建泛滥
【发布时间】:2013-07-14 10:27:57
【问题描述】:

我注意到,即使作为匿名用户,在我第一次访问网页时也会创建一个 shiro 会话(并在我的情况下插入到我的数据库中)。成功登录后,会话记录会简单地更新为适当的属性。

现在我尝试对主页 url 进行“压力测试”:

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

当我计算创建的会话与循环一样多时,我的恐惧成真了。

所以这里的问题是,我是否可以避免网络爬虫或垃圾邮件发送者造成会话创建泛滥?

【问题讨论】:

    标签: shiro


    【解决方案1】:

    这对我有用,只允许在登录时创建会话,耶:

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

    【讨论】:

    • 我怀疑在我给出允许您编写代码示例的答案之后,您将答案授予了自己:(
    • @LesHazlewood:您好作者。只是想澄清一下,我的答案比您的答案早 2 天。 SO中的答案未按日期排序,因此可能会导致错误假设。
    • 我很抱歉!感谢您的澄清!
    【解决方案2】:

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

    如果您使用 JSP,您可能还需要设置

    <%@ page session="false" %>
    

    在 JSP 的顶部确保标记库或 Servlet 容器本身不会尝试使用会话(您会惊讶地发现这种情况在您不知情的情况下发生的频率)。

    【讨论】:

    • 很抱歉,我忘记提及我正在使用自定义和本机会话,因此它不受网络会话的影响。幸运的是,在这种情况下,我使用的是 freemarker 而不是 JSP。谢谢。
    • @AlbertKam 听起来不错 - 所以是的,我认为在您的情况下使用 noSessionCreation 过滤器是最好的方法。
    猜你喜欢
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 2018-12-20
    • 2012-11-30
    • 2014-05-14
    • 2012-02-11
    • 2013-12-06
    • 2018-06-02
    相关资源
    最近更新 更多