🔒Security
nodejs express routing case sensitive options
Universe7202
2022. 3. 6. 10:54
최근 CTF에서 nodejs express 문제가 나왔다.
express에서 routing 기능이 있는데, 선택 옵션을 추가할 수 있다는 걸 처음 알았다.
express Docs 내용 중, 아래 사진을 보면, Router에 대한 설명을 적어놓았다.
표에서 속성에 `caseSensitive` 라는 옵션이 있고, 만약 추가하지 않는다면 기본값으로 `대소문자를 구문하지 않고, /Foo와 /foo는 같은 경로로 해석한다.` 라고 되어 있다.
그래서 테스트를 위해 다음과 같이 코드를 작성했다.
/* app.js */
const express = require("express");
const app = express();
const port = 39012;
const test_router = require("./router/test");
/* 서버 시작 */
app.listen(port, () => {
console.log(`Server Running :${port}`);
})
/* /router/test.js */
const express = require("express");
const router = express.Router({caseSensitive: true});
router.get("/test", (req, res) => {
res.send("asdf");
})
module.exports = router;
`/router/test.js` 파일을 보면 `express.Router({caseSensitive: ture})` 라고 Router 안에 옵션을 추가한 것을 볼 수 있다.
이렇게 설정을 하게 되면, URL을 대소문자 구분하여 처리하게 된다.
반대로, 옵션을 추가하지 않으면 `/test` 와 `/TEST` 는 정상적인 요청으로 받아드려 같은 응답을 하게 된다.