특정 IP로만 접근을 허용하거나 차단해야 하는 경우가 있다.
Node.js와 Express.js 환경에서 어떻게 하는지 알아보자.
특정 IP 설정
const ips = ['127.0.0.1','127.0.0.2'];
접근 허용
const allowIPs = (ips) => {
return (req, res, next) => {
const clientIP = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
if (ips.includes(clientIP)) {
next();
} else {
res.status(403).send('접근 차단');
}
};
};
app.use(allowIPs(ips));
접근 차단
const blockIPs = (ips) => {
return (req, res, next) => {
const clientIP = req.headers['x-forwarded-for'] || req.socket.remoteAddress;
if (ips.includes(clientIP)) {
res.status(403).send('접근 차단');
} else {
next();
}
};
};
app.use(blockIPs(ips));
req.headers['x-forwarded-for']
- 프록시나 로드밸런서를 통해 들어온 요청에서 클라이언트의 IP 주소를 확인하기 위한 헤더 값
- 쉼표로 구분된 IP 주소 목록이며, 첫 번째 IP 주소가 클라이언트의 실제 IP 주소
req.socket.remoteAddress
- Node.js 속성을 통해 접속한 클라이언트의 IP 주소
참고
'JavaScript&TypeScript' 카테고리의 다른 글
| JavaScript 소수점 반올림, 올림, 내림, 버림 처리 (0) | 2023.05.30 |
|---|---|
| JavaScript flat(), flatMap() (0) | 2023.05.26 |
| JavaScript Fetch, Axios 차이 (0) | 2023.05.22 |
| JavaScript console.time() (0) | 2023.05.12 |
| JavaScript console.table() (0) | 2023.05.12 |