Nous avons une application NODE.JS Express fonctionnant à Heroku. Il gère l'authentification et doit être très sécurisé. P>
Nous avons forcé redirect à HTTPS lorsque nous recevons une demande HTTP. Mais cela ne semble pas suffire. Avec des outils tels que SSLStrip, nous pouvons poster via http. P>
La seule solution à la main semble désactiver complètement le HTTP sur Heroku. P>
Comment faire ça? Y a-t-il d'autres suggestions? P>
3 Réponses :
Selon Owasp, vous ne devez pas rediriger de HTTP sur HTTPS. Voir https://www.owasp.org/index.php/ Transport_layer_protection_cheat_sheet # règle _- supprimé em> -_ do_not_perform_redrects_from_non-tls_page_to_tls_login_page_to_tls_login_page Pour plus de détails.
Je pense que la meilleure solution serait de rejeter la demande avec un message permettant à l'utilisateur de savoir pourquoi. Vous devriez être capable de le faire dans une fonction middleware. Le code d'état réel que vous revenez est discutable, mais quelque chose comme cela devrait fonctionner: p>
Vous pouvez tester si une requête utilisée HTTPS, puis forcer une redirection à l'aide de HTTPS si cela est requis (notez la préoccupation indiquée par @RYAN sur la redirection et la sécurité). Avec Heroku, vous pouvez vérifier les en-têtes X-X-FORWARD-PROTO code> code> pour vous assurer qu'il est https. Voici un exemple:
var express = require('express');
var env = process.env.NODE_ENV || 'development';
var forceSSL = function (req, res, next) {
if (req.headers['x-forwarded-proto'] !== 'https') {
return res.redirect(['https://', req.get('Host'), req.url].join(''));
}
return next();
};
var app = express();
// in your app-level configurations
if (env === 'production') app.use(forceSSL);
Nous avons utilisé package express-sslify em> NPM. Ajouté
Comment avez-vous forcé une redirection?
Nous avons utilisé un package NPM 'Express-Sslify'. Ajouté 'app.use (appliquer.https (vrai));'
@Siliciononlus, vous auriez dû poster ce commentaire comme réponse de votre propre question. C'est totalement valide car il s'agit d'une réponse alternative valide, de sorte que d'autres ne lisent pas les commentaires pouvaient également le voir.