2017-08-02 9 views
0

Par exemple, j'ai un point de terminaison api REST écrit dans Node.js. Il peut être consulté à partir d'une page Web pour les utilisateurs non techniques, et il peut également être accessible via la ligne de commande en utilisant la commande curl. Il ne nécessite aucune information d'identification pour y accéder car il est destiné à être ouvert à quiconque pour y accéder. Le problème que j'essaie de résoudre est comment puis-je empêcher quelqu'un d'accéder malicieusement à ce point de terminaison de l'API REST, par exemple en envoyant un ping à ce point de terminaison api encore et encore, ou comment empêcher les attaques ddos.Comment sécuriser une API REST ouverte contre un abus dans Node.js?

Pas besoin d'une question de programmation, laissez-moi savoir s'il y a un meilleur endroit pour poser cette question.

Répondre

1

DDOS n'est pas Prévention facile sans utiliser des solutions comme CloudFlare.

Pour sécuriser votre api REST, vous pouvez utiliser middleware si vous utilisez express

const checkAuth = (req, res, next) => { 
    // logic for checking auth 
    if (authorized) { 
    return next(); 
    } 
    res.status(401).send('NEED AUTH'); 
}; 
router.post('/login', checkAuth, (req, res, next) => { 
    // actual logic for login 
}); 

Mise à jour: en ce qui concerne @ la réponse de Akarsh, vous pouvez utiliser middleware multiples avant la logique réelle. Par exemple, un pour la vérification d'autorisation et un pour la limite de débit

router.post('/logic', checkAuth, rateLimit, (req, res, next) => {}); 
1

Vous dites que vous voulez qu'il soit ouvert, mais vous dites que vous voulez qu'il soit ouvert!

Limitation/authentiques jetons. Choisissez au moins un, préf deux.

Les attaques Ping et DOS sont différentes et n'ont rien à voir avec votre API en tant que telle. À moins que votre information ne soit valorisable/hautement concurrentielle, quelque chose d'aussi simple que l'interdiction d'IP ira un long chemin.