Как использовать Csurf Express JS 4.0?

Я проверял csurfВики, но он пуст. Этот модуль добавляет csrfToken() функция для запросов пользователей, но тогда, как я должен ее использовать?

может кто-нибудь дать пример кода с пояснениями? Что делать на стороне пользователя? Что мне делать на сервере?

1 ответов


на csurf промежуточное ПО предназначено для отклонения запросов, содержащих полезную нагрузку (например, параметры тела), если у него нет допустимого маркера. Вот как вы его используете:

app.use(require('body-parser')());
app.use(require('cookie-parser')('YOUR SECRET GOES HERE'));
app.use(require('express-session')());

app.use(require('csurf')());

app.get('/some-form', function(req, res){
    res.send('<form action="/process" method="POST">' +
        '<input type="hidden" name="_csrf" value="' + req.csrfToken() + '">' +
        'Favorite color: <input type="text" name="favoriteColor">' +
        '<button type="submit">Submit</button>' +
        '</form>');
});

app.post('/process', function(req, res){
    res.send('<p>Your favorite color is "' + req.body.favoriteColor + '".');
});

попробуйте вынуть req.csrfToken() (или заменяя его чем-то другим); вы обнаружите, что форма больше не работает.

обратите внимание, что вам нужны сеансы для csurf на работу. Если вы хотите понять причины, по которым вы бы использовали csurf, см. статью Википедии о кросс-сайте подделка запросов (CSRF).