質問編集履歴

1

csrfの実装で困っていること、またその実装方法の詳細を追記しました。

2018/05/31 10:33

投稿

uroncha
uroncha

スコア54

test CHANGED
@@ -1 +1 @@
1
- Node+express Multerでエラー
1
+ Node+express Multer Csrfでエラー
test CHANGED
@@ -56,6 +56,90 @@
56
56
 
57
57
 
58
58
 
59
+ csrfを実装したソースは下記のように書きました。
60
+
61
+
62
+
63
+ ```javascript
64
+
65
+ var ejs = require('ejs');
66
+
67
+ var cookieParser = require('cookie-parser');
68
+
69
+ var bodyParser = require('body-parser');
70
+
71
+ var csrf = require('csurf');
72
+
73
+
74
+
75
+ var app = express();
76
+
77
+
78
+
79
+ app.engine('ejs', ejs.renderFile);
80
+
81
+
82
+
83
+ app.use(bodyParser.json());
84
+
85
+ app.use(bodyParser.urlencoded({ extended: false }));
86
+
87
+ app.use(cookieParser());
88
+
89
+ app.use(csrf({ cookie: true }));
90
+
91
+
92
+
93
+ app.use(function(req, res, next) {
94
+
95
+ res.locals.csrfToken = req.csrfToken();
96
+
97
+ next();
98
+
99
+ });
100
+
101
+
102
+
103
+ var upload = multer({ dest: './upload_data/' }).single('upload_file');
104
+
105
+
106
+
107
+ app.get('/', function (req, res) {
108
+
109
+ res.render('index.ejs');
110
+
111
+ });
112
+
113
+
114
+
115
+ app.post('/', function (req, res, next) {
116
+
117
+ upload(req, res, function(err) {
118
+
119
+ if (err) next(err);
120
+
121
+ else res.render('result.ejs', {dd : req.file});
122
+
123
+ });
124
+
125
+ });
126
+
127
+ ```
128
+
129
+ ```html
130
+
131
+ <form method="post", enctype="multipart/form-data", action="/">
132
+
133
+ <input type="file", name="upload_file">
134
+
135
+ <input type="submit" value="UPDATE">
136
+
137
+ <input type="hidden" name="_csrf" value="<%= csrfToken %>">
138
+
139
+ </form>
140
+
141
+ ```
142
+
59
143
  csrf+multerを使う為のコツを教えて頂きたいです。
60
144
 
61
145
  よろしくお願いいたします。