文档章节

Express 3 implement CSRF protection

轻风叶语
 轻风叶语
发布于 2014/10/18 12:02
字数 368
阅读 68
收藏 2

CSRF(Cross Site Request Forgery)是常見但不顯眼的攻擊方式,本篇不介紹如何使用CSRF攻擊

只有介紹如何透過Express去實作CSRF protection

要實作CSRF protection要開啟一些功能(session, csrf, cookieParser),詳細內容如下


...app.use(express.cookieParser('your secret here'));app.use(express.session());app.use(express.csrf());app.use(app.router);...

透過這樣的設定Express就會幫你產生csrf的token,確保每次Request沒有被偽造

但是只有這樣的宣告並沒有用,還需要把值帶入表單中

而要帶入表單中,需要先把值存在res.locals裡面,這樣在view裡面才可以使用

因此要加入下列的程式碼:

// global controllerapp.all('/*', function(req, res, next) {
    res.locals.csrf = req.session ? req.csrfToken() : ""; // CSRF
    next();});

透過上面的程式碼,讓每一頁進入前都會先執行裡面的設定,也就是說把res.locals加入csrf這個變數

res.locals.csrf的值來至於 req.csrfToken() (由Express負責產生

接下來在表單裡面加入一個hidden的值,名稱是「_csrf」完整HTML如下

<input type="hidden" name="_csrf" value="<%= csrf %>">

其中<%= csrf %>是因為我用EJS,所以使用<%%>輸出變數,csrf則是在res.locals.csrf的值

透過這樣的設定 Express 就會幫你做好保護了

如果害怕的話,可以開啟開發者工具把_csrf的值修改過再送出表單

就會看到 Forbidden 的訊息


本文转载自:http://shinychang.net/article/52f5eaf6e0220c864268dec4

轻风叶语
粉丝 6
博文 10
码字总数 281
作品 0
扬州
技术主管
私信 提问
Cross Site Request Forgery protection

The CSRF middleware and template tag provides easy-to-use protection against Cross Site Request Forgeries. This type of attack occurs when a malicious Web site contains a link, ......

岭南六少
2011/08/21
0
0
TypeScript 3 + Koajs + Node.js

转发 TypeScript 3 + Koajs + Node.js 自NodeJS早期以来,Express一直是NodeJS开发人员事实上的标准Web框架。 但是,JavaScript在过去几年中已经走过了漫长的道路,像promises和async函数这样...

durban
2018/09/18
0
0
CSRF 相关

http://stackoverflow.com/questions/5100539/django-csrf-check-failing-with-an-ajax-post-request http://stackoverflow.com/questions/6194550/csrf-with-jquery-and-post-in-django-1-3......

K68
2016/05/26
2
0
Getting started with MVC(7)

MVC Security MVC has built-in some security features to protect pages, eg. CSRF protection. CSRF protection MVC has built-in CSRF protection, there is aCsrfinterface. ConfigureC......

hantsy
2016/04/18
23
0
Padrino 0.11.0 发布,Ruby 开发框架

Padrino 发布了 0.11.0 版本,主要改进内容包括: 1) Totally Redesigned Admin 2) New brand identity on the way 3) Upgraded Sinatra and http_router 4) CSRF Form Protection 5) Active......

oschina
2013/03/23
623
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
2分钟前
0
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
16分钟前
5
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
31分钟前
0
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
36分钟前
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
43分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部