DTP Base provides a scalable and secure Node.js application development harness ready for production service.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

32 lines
829 B

// site-tripwire.js
// Copyright (C) 2024 DTP Technologies, LLC
// All Rights Reserved
'use strict';
import path from 'node:path';
import { SiteLog } from './site-log.js';
export class SiteTripwire {
constructor (dtp) {
this.dtp = dtp;
this.log = new SiteLog(this, 'Harness');
}
async start ( ) {
this.blockedPaths = (await import(path.join(this.dtp.config.root, 'config', 'tripwire.js'))).default;
}
async guard (req, res, next) {
// Tripwire looks for known-bad URLs, malicious URLs, and requests that indicate
// the client is "snooping" and shuts them down.
const path = this.blockedPaths.find((path) => req.path.startsWith(path));
if (!path) {
return next();
}
this.log.alert('tripwire path requested', { path, ip: req.ip });
return res.status(403).end();
}
}