XSS(クロスサイトスクリプティング)
javaで行える全ての動作で攻撃可能
railsではデフォルトでセキュリティの設定がされているため、この攻撃に対して安全に利用できる。
何らかの手法で自身のアプリに入り込まれ、セキュリティ設定を無効にされた場合、
cookieを盗まれて情報が流出したり、マルウェアにアクセスさせられ、ウイルスに感染してしまう。
SQLインジェクション
アプリケーション外部からSQL文を挿入されること。
挿入されることにより、DB内の情報を全て盗まれたり、アカウントを乗っ取られたりする。
対策は、「」'や「/」のエスケープ文字を使うこと、バインド機構を使用すること。
バインド機構とはDB側からSQL文を発行し、その中の必要な情報だけを入力出来るようにする仕組み。
SELECT * FROM user WHERE user_id=? AND password=?
DBから上記のようなSQL文が発行される。この文中の?の値だけ入力可能。
railsでは、デフォルトでここまで入力されるようになっている。
自ら入力する必要があるならば
find_by_sqlメソッドを利用し、?によって入力値を指定してあげる必要がある。
CSRF(クロスサイトリクエストフォージェリ)
パスワードの変更、ECサイトでの購入などの重要な処理を行うときに攻撃から守る。
対策は、その人個人しか知らないような秘密情報の埋め込み(トークン)を使用すること、
パスワードの再入力を促す画面を設定すること、
リファラーのチェック(どのような経路でサイトにアクセスしたか)が挙げられる。
これは、重要な処理を行うときにだけ使用する。
(全てにおいて適用すると何度も入力することになる。DBとのやりとりも多くなるため動作が遅くなる。)
セッションハイジャック
セッションIDを乗っ取られる。これを乗っ取られると個人情報の閲覧や送金、購入などほぼ何でも出来る。
対策としてはSSLを有効にすること。
railsでは
config.force_ssl = true
を有効にすることでSSLが使用出来る。