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);