【问题标题】:Why does express-session create a session with every wget request to it?为什么 express-session 会为每个 wget 请求创建一个会话?
【发布时间】:2022-01-24 17:16:08
【问题描述】:

我决定使用 wget 进行测试,结果表明,如果您只是使用 wget 发送垃圾邮件,则可能会阻塞会话存储,即存储只是创建了非常非常多的小型会话,但其中很多。我怎样才能避免这种情况?

我脑子里有两个场景。

  1. 减少会话的最长期限。
  2. 设置速率限制。

但我不确定这是否足够。你有什么推荐的?

如果每 0.1 秒调用一次 wget,则攻击时间少于 5 分钟。

注意:仅当您使用 wget 之类的工具时才会发生这种情况。如果您在浏览器中刷新页面,则不会创建新会话。

代码示例:

const express = require('express')
const app = express()
const port = 3000
const path = require('path')
const MongoStore = require('connect-mongo');

app.use(require('cookie-parser')());
app.use(require('body-parser').urlencoded({extended: true}));
app.use(require('express-session')({
  secret:'keyboard cat',
  resave: true,
  saveUninitialized: true,
  cookie:{
    sameSite: 'none',
    secure: true,
    maxAge: 14 * 24 * 3600 * 1000 // two week
  },
  store: MongoStore.create({ mongoUrl: 'something secret' })

app.set('view engine', 'ejs');
app.set('trust proxy', 1)

app.get('/', (req, res) => {
  res.send(req.session)
})

【问题讨论】:

    标签: node.js express express-session express-rate-limit


    【解决方案1】:

    原来我只是没有把文档读到最后。要不每次只需要设置“saveUninitialized: false”就创建会话。然后,仅当用户(例如)找到站点或会话发生某些事情时才会创建会话。

    但如果你有更多想法,请告诉我。

    【讨论】:

      猜你喜欢
      • 2021-06-15
      • 2021-04-21
      • 1970-01-01
      • 2013-02-23
      • 2016-08-07
      • 2011-05-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-18
      相关资源
      最近更新 更多