Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。セキュリティWebアプリのセキュリティ用語として、CSRFというものが有ります。Forgery(クロスサイトリクエストフォージェリ)の略です。サイトCSRFとはどんなものか?Wikipediaではこう書かれています。おける攻撃手法のひとつである。攻撃用WebページにあるJavascriptでユーザーの操作を偽装して攻撃対象のページにアクセスする・・・どういった被害を受けるかIPAのセキュア・プログラミング講座で以下のように説明されています。インターネットショッピングの最終決済や退会等Webアプリケーションの重要な処理を呼び出すようユーザを誘導する攻撃である。実際に会った事例として、有るページにアクセスした大学生が、全く知らない小学校の掲示板に意図しない書き込みをされ、誤認逮捕されたという事例があります。WikipediaどういったWebアプリケーションが狙われやすいかIPAの講座には以下のように書かれています。フォームに入力した情報の検証を行わないサイトBasic認証を行うサイトDigest認証を用いているWebアプリケーションそのほかWebクライアントから自動で得られる情報にもとづきユーザやセッションを識別しているWebアプリケーションログイン方法が雑だったり、ブラウザの情報を元にするサイトは危険ということですね。攻撃用Webサイトは攻撃者が作るため、防ぎようがありません。様々なものがありますが、一番手っ取り早いのはCSRF対策がされているWebアプリケーションフレームワークを使うことです。IPAが公開している対策方法を実装することです。RailsCakePHPASP.netなど、採用実績が多いフレームワークはたいてい対応しているようです。※ただし、フレームワークを採用しているからといってCSRF対策をしているかはまた別問題。これら以外のフレームワークも対応しているものがあるので、自分が使っているフレームワークのリファレンスを読んで確認しておくとよさげ。Railsではどんな対策をしているの?RailsはIPAが公開している対策の照合方式がデフォルトで組み込まれています。そのため、開発者が意識する必要はありません。:exceptionという記述がデフォルトで有ると思います。%>というものがデフォルトであります。コレがCSRF対策のキモとなっています。全体の流れとしては、以下のように処理していきます。PUTなどのフォーム、リンクを作成するだけで、Railsがトークンと言われる証明書のようなもの(公開鍵暗号方式のキーみたいなイメージ)を作り、それをフォームに自動的に埋め込み、アプリケーションに保存します。フォームのsubmitボタンがクリックされると入力した情報とトークンをアプリケーションに送り、トークンが一致することを確認できて初めてサーバーにデータを保存できます。ここでトークンが一致しなければRailsは例外InvalidAuthenticityTokenを発生させ、データは保存されません。このトークンは、Railsがランダムに作成するため、複製・推察が難しく悪意あるサイトがトークンを埋め込んだリクエストを送信してもサーバーで弾かれます。悪意あるサイトが入力を偽装するjsを作成してデータ入力しようとしたとしても、弾くことができるようになっています。これがRailsのCSRF対策です。注意点RubyOnRails4アプリケーション・プログラミングではRails開発者がCSRF対策で意識することは以下と書かれています。link_toなどのビューヘルパー経由で生成するレイアウトを自分で作成する場合は、csrf_meta_tagメソッドの呼び出しを忘れないまた、Rails4からは不正なリクエストが行われた時の挙動を変更できるようになっています。コレは、まだ後で紹介します。14:20CSRFとはなんぞやTweet広告を非表示にする関連記事2016-12-30CentOS7でASP.netを動かすちょっと業務でASP.netに関わることになったので、自宅でもASP....2016-11-26NoSQLとは先日、MongoDBの記事を書きました。stonebeach-dakar.hatenabl...2016-07-14Railsのリソースとルーティングについて今回はRailsの基礎の1つ、リソースについて書いていきます。コントローラとアクション今回は、コントローラとアクションについて学習してきます。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。