私はウェブサイトを構築していますが、その途中で、知らないことがたくさんあり、それらのいくつかを理解するための助けを得ることを望んでいました。
FlaskとJinjaテンプレート言語を使用してWebサイトの構築を開始しました。これは非常に直感的で理解しやすいものでした。クライアントが要求を行い、サーバーがすべての要求が適切であるかを確認してから、作業ページ全体を配信します。一行。
次に、ReactJSを使用するようにフロントエンドをアップグレードしたいと思いました。私の研究から、python-react
のようなライブラリを使用した場合、私はcouldがサーバー側のレンダリングルートに進むことがわかりましたが、代わりにクライアント側のレンダリング。これはいくつかのことを意味しました
したがって、クライアントがたとえばホームページをリクエストすると、プロセスは次のようになります(私が正しく理解していれば):
フォームをレンダリングするときに、フォームにCSRFトークンを埋め込む必要があります。つまり、トークンはフロントエンドサーバーで作成されます。しかし、バックエンドはどのようにしてそのトークンを検証するのでしょうか。すべての認証もフロントエンドサーバーで行う必要がありますか?フロントエンドとバックエンドをどのように組み合わせるかは明確ではありません。
フロントエンドサーバーとバックエンドサーバーを分離する必要性については、あなたは間違っています。必要なのはoneサーバーのみで、Flaskベースのサーバーにすることができます。
/home
ダイアグラム内)サーバーは1つしかないため、CSRFトークンの処理は問題になりません。
Flaskを使用するAPIでのCSRFの懸念については、 SeasSurf などのプラグインの1つを使用できます。基本的に、CSRFトークンはバックエンドサーバーで作成され、次に、そのサーバーからの応答で渡されるCookieを介してクライアントに格納されます。次に、csrf値が、ポストリクエストのリクエストヘッダー内のバックエンドサーバーに渡されて検証されます。