egg.jsの最初のピット-postリクエストの正しい姿勢
4457 ワード
eggフレームワークが一般的なhttpリクエストをどのように受け入れるか、データを返す方法を学ぶために、formのdemoを書きました.
それから私は直接実験を始めて、結果はずっと間違っていて、403、何の安全検証が何なのかと言って、後で私は詳しく公式のドキュメントを見て、このような一言を見ました.
後で詳しく見てみると、eggフレームのこのセキュリティプラグインを内蔵した鬼だった.簡単に言えば、このプラグインの機能はpostリクエストが入るたびに、リクエストが持参したパラメータの中に特定のパラメータが含まれているかどうかをチェックすることです.このパラメータは鍵に相当します.リクエストしたcookieに存在します.リクエストするときは特定のパラメータ名を持って、パラメータ値がこの鍵のデータに等しい必要があります.リクエストヘッダヘッダに直接入れて、ドキュメントを見て設定すればいいのです.
もっとはっきり言って、あなたが要求する时、サーバーはあなたに“天王盖地虎”を闻いて、あなたは“ニワトリのキノコを煮込みます”に答えなければならなくて、1つの道理、ただこの“ニワトリのキノコを煮込みます”のパスワードはあなたが要求したクッキーの中に存在して、あなたがしなければならないのはクッキーの中から出して、それからheaderの中に置いてあるいは直接あなたの要求したパラメータの中に加えます https://eggjs.org/zh-cn/core/security.html#安全上の脅威-csrf-の防止
総じて言えば、個人的にアリのこのフレームワークはとても牛が追い詰めていると感じて、少なくとも安全の面ではとてもよくて、深く勉強する価値があります.
<form action="/form" method="post">
<input type="text" name="name" placeholder="name">
<input type="text" name="age" placeholder="age">
<input type="submit" value=" ">
form>
// router.js
'use strict';
module.exports = app => {
app.get('/', 'render.ejs');
app.post('/form',app.controller.form.listPosts)
};
// controller/form.js
const Controller = require('egg').Controller;
module.exports = class PostController extends Controller {
* listPosts() {
this.ctx.body = {
name: this.ctx.request.body.name,
age: this.ctx.request.body.age
}
}
};
<h3>name: =name%>h3>
<h3>age: = age %>h3>
それから私は直接実験を始めて、結果はずっと間違っていて、403、何の安全検証が何なのかと言って、後で私は詳しく公式のドキュメントを見て、このような一言を見ました.
:
POST :'secret is missing'。 koa-csrf/index.js#L69 。
後で詳しく見てみると、eggフレームのこのセキュリティプラグインを内蔵した鬼だった.簡単に言えば、このプラグインの機能はpostリクエストが入るたびに、リクエストが持参したパラメータの中に特定のパラメータが含まれているかどうかをチェックすることです.このパラメータは鍵に相当します.リクエストしたcookieに存在します.リクエストするときは特定のパラメータ名を持って、パラメータ値がこの鍵のデータに等しい必要があります.リクエストヘッダヘッダに直接入れて、ドキュメントを見て設定すればいいのです.
もっとはっきり言って、あなたが要求する时、サーバーはあなたに“天王盖地虎”を闻いて、あなたは“ニワトリのキノコを煮込みます”に答えなければならなくて、1つの道理、ただこの“ニワトリのキノコを煮込みます”のパスワードはあなたが要求したクッキーの中に存在して、あなたがしなければならないのはクッキーの中から出して、それからheaderの中に置いてあるいは直接あなたの要求したパラメータの中に加えます https://eggjs.org/zh-cn/core/security.html#安全上の脅威-csrf-の防止
総じて言えば、個人的にアリのこのフレームワークはとても牛が追い詰めていると感じて、少なくとも安全の面ではとてもよくて、深く勉強する価値があります.