情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

CSRF対策について

サイト制作において大切なCSRF対策!

今回はCSRF対策について学んだので使い方などを書いていきます。

現在私自身webアプリを制作していて最近CSRFという言葉に出会ってかなり重要だと感じたので、これからwebアプリを作りたいと思っている人に参考にしていただければ幸いです。

1.クロスサイト・リクエストフォージェリ(CSRF)とはなにか?

2.CSRF対策はどうすればいいのか

1.クロスサイト・リクエストフォージェリ(CSRF)とはなにか?

もしこれを見ている方がwebアプリケーションを制作しようとしていて、ログイン機能をつけたい、掲示板のように投稿できるようにしたい。という場合は特に注目してください。

例えば自分が作ったwebアプリがあり、Cookieでセッション管理を行っているとします。 ユーザーがwebアプリにログインするとCookieにセッションIDが保存されます。その後ユーザーがアプリを離れてほかのサイトにいってもセッションは残ってしまいます。

その状態でユーザーが悪意のあるサイトに訪れリンクをクリックしたり、スクリプトを実行するとブラウザはCookieのセッションIDとパラメータを自分が作ったwebアプリに送ってしまいます。

こうなったらもうお手上げです、重要なのはwebアプリから見るとCookieにセッションIDが入っているので正規のユーザーかどうか判断できないというところです。

2.CSRF対策はどうすればいいのか

ではどうすればいいのか、結論から言いますとログインのリクエストが送られてきたタイミングでトークン(一度のみ有効なパスワード)を利用すればいいらしいです。

どういうことかといいますと重要な処理を行うページに、hidden(見えない項目)でトークンをセットして表示、保存します。そしてログインリクエストが送られてきたらトークンも一緒に送り、この送られてきたトークンと保存しておいたトークンが等しければ正しいリクエストだと判断できます。

このほかに単純ですが重要な処理のタイミングでパスワード入力をしてもらうなどがあります。

まだ覚えたてなので説明がおぼつかない部分があり申し訳ありません。 今回参考にさせて頂いたサイトを記載致します。

クロスサイト・リクエストフォージェリ(CSRF)と対策 | Webセキュリティの小部屋

もっと理解して使いこなせるようになったらコードなどもまぜて再度アップします!