security(posimai-dev): セッション API パストラバーサル修正
/api/sessions/:id で path.join 後に SESSIONS_DIR 外への逸脱を検証。 正常な ID(UUID 等)には影響なし。requireLocal により localhost/Tailscale 限定だが念のため多層防御。
This commit is contained in:
parent
7c6ecb77bc
commit
33100d9efc
|
|
@ -73,6 +73,7 @@ app.get('/api/sessions', requireLocal, (req, res) => {
|
||||||
// セッション内容 API
|
// セッション内容 API
|
||||||
app.get('/api/sessions/:id', requireLocal, (req, res) => {
|
app.get('/api/sessions/:id', requireLocal, (req, res) => {
|
||||||
const file = path.join(SESSIONS_DIR, req.params.id + '.log');
|
const file = path.join(SESSIONS_DIR, req.params.id + '.log');
|
||||||
|
if (!file.startsWith(SESSIONS_DIR + path.sep)) return res.status(400).json({ error: 'invalid' });
|
||||||
if (!fs.existsSync(file)) return res.status(404).json({ error: 'not found' });
|
if (!fs.existsSync(file)) return res.status(404).json({ error: 'not found' });
|
||||||
res.type('text/plain').send(fs.readFileSync(file, 'utf8'));
|
res.type('text/plain').send(fs.readFileSync(file, 'utf8'));
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue