2017-12-14 4 views
0

양식을 보낸 후에 항상이 "ForbiddenError : csrf 토큰"을 얻지 않아도이 기본 테스트 응용 프로그램에서 csurf를 사용할 수 없습니다.csurf (Node.js)를 사용하여 csrf-token의 유효성을 검사 할 수 없습니다.

내가 뭘 잘못하고 있니? 나는 in the documentation for csurf 주어진 예제를 따르려고 노력하고 있는데 (TLS도 사용하고 있지만 결과에 영향을 미칠 수 있습니까?).

'use strict' 

var https = require('https'); 
var express = require('express'); 
var cookieParser = require('cookie-parser') 
var csrf = require('csurf') 
var bodyParser = require('body-parser') 
var fs = require('fs'); 
var oauth = require('./oauth.js'); 
var argv = require('minimist')(process.argv.slice(2), { 
    alias: {p: 'port'}, 
    default: {port: 80}, 
}); 

// setup route middlewares 
var csrfProtection = csrf({ cookie: true }) 
var parseForm = bodyParser.urlencoded({ extended: false }) 

var app = express(); 

app.use(cookieParser()); 

// Init SSL 
var sslPath = '/etc/letsencrypt/live/censored/'; 
var options = { 
    key: fs.readFileSync(sslPath + 'privkey.pem'), 
    cert: fs.readFileSync(sslPath + 'fullchain.pem') 
}; 

app.get('/some-form', csrfProtection, 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', csrfProtection, function(req, res){ 
     res.send('<p>Your favorite color is "' + req.body.favoriteColor + '".'); 
}); 


app.get("/", function(req, res) { 
    res.send('Hello World!'); 
}); 
app.listen(argv.port, function() { 
    console.log('listening on port ' + argv.port); 
}); 

https.createServer(options, app).listen(443); 

답변

0

일단 모든 것이 잘 되었다면 parseForm을 사용하는 것을 잊었습니다!