Railsには、悪意のある攻撃に対するセキュリティの仕組みが様々用意されている。今回は、
CSRFと呼ばれるサイトの成りすましによるクラッキングに対するセキュリティ対策について、アウトプットしてみます。
※Railsのセキュリティについては、以下の記事を参照。
https://railsguides.jp/security.html#%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%AA-csrf
1.CSRFとは?
CSRFとは、クロスサイトリクエストフォージェリのことである。
これは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性(ぜいじゃくせい)を利用した攻撃方法のことをいう。脆弱性とは、コンピュータのOSやソフトウェアにおいて、プログラムの不具合等のミスが原因となって、発生した情報セキュリティ上の欠陥のことをいう。これにより、本来拒否すべき他サイトからのリクエストを受信して、処理してしまうという現象が生じる。
2.クラッキングとは?
クラッキングとは、コンピュータネットワークに繋がれたシステムへ不正に侵入したり、コンピュータシステムを破壊・改竄するなど、コンピュータを不正に利用することをいう。
具体的な手段としては、IDとパスワードを不正に入手してログインするやパスワードを総当たりして特定するなどの手段がある。
3.Rails側のセキュリティ対策
上記のような攻撃に対して、Rails側では、ApplicationController内にデフォルトで以下のようなセキュリティが組まれている。
protect_from_forgery with: :exception
この記述により、アプリで作られたフォームに対してトークンが発行される。そして、正しいフォームからの通信なのかを判別することができ、クラッキングを防ぐことができるのである。
また、トークンとは、一度だけ使うことを前提とされた「使い捨てのパスワード」のことをいう。
以上
<参考記事>
・https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/csrf.html
・https://cybersecurity-jp.com/cyber-terrorism/24253#i
・https://cybersecurity-jp.com/security-measures/30358#i