Output Diary

プログラミング × 読書 のアウトプットを発信しています

【Rails】セキュリティ

 
 
企業が取組むべきセキュリティ対策とは?対策種別にて分かりやすく解説|ネットECの基本|ECビジネスのトータルパートナー|ヤマトフィナンシャル

 

 
Webアプリケーションは便利な反面、使用する際にリスクも発生します。
 
 
 
例えば、
・ユーザーアカウントを奪われた
・不正なコンテンツが表示された
・機密情報を抜き取られてしまった
 
 
などなど色んなリスクが存在します。
これらを防ぐには、セキュリティの強化🔒が必須です。
 
 

Railsの代表的なセキュリティ対策

 
■Strong Parameters
CSRF対策
■各種のインジェクション対策

 

 

Strong Parameters

 
想定通りのパラメータかどうかをホワイトリスト方式でチェックします。
 
ホワイトリストとは
ホワイトリストは、使用してよいと判断した安全なアプリケーションやプログラムを定義したリストです。「安全なものだけを利用し、それ以外はすべてブロックする」ために存在するリストだといえます。

 

 
 

CSRF対策

 
CSRF(Cross-site Request Forgery )は、ユーザーがログインしているWebアプリケーションに悪意のある操作を行う攻撃のことをいいます。
 
例えば、
・別のWebサイト上に用意したコンテンツを踏んでしまう
・画像を表示したことをきっかけに悪意のある操作を行う

 

などがあげられます。
 
 
CSRFは、
ログイン状態でなければ出来ない操作を外部のサイトから実行させようとしてきます。
 
 
例えば、
Twitterを利用しているときに罠のリンクを踏んでしまい自分のアカウントと連携させてしまうと、勝手にスパムのツイートが流れてくるといったものです。
 
ちなみに私は高校の時特に何も考えずにあれこれ連携させていたのでタイムラインが一時スパムツイートで埋まった経験あります(笑)
 
診断メーカーであったり、興味がそそられる話題で罠リンクへと誘導させられることが多いような気がします。
 
 今はスパムツイートが流れてくるのを見かけなくなったので、Twitterのセキュリティが上がったのか、我々のリテラシーが上がったのかのどちらかですね😂
 
 
 
 
ではではこれらの攻撃から守るにはどうしたら良いのか。。
 
 
 
それらの攻撃を防ぐためには、
そのリクエストがユーザーの意図であるかどうかを確認する必要があります。
 
 
 
 
一般的な解決策としては、
セキュリティートーク🔒を発行して、
照合する方法が用いられます。
 
 
 
そうすることで、リクエストがユーザーの意図であるかどうかを確認することが出来ます!
 
 
CSRFを防ぐためにはGETリクエストを用いてはいけません。
対策の意味がありません!
POSTリクエスを使用しましょう。
 
 
GETリクエスト → 単純な情報の読み出し
POSTリクエスト  → 状態変化や何らかの作用を伴う操作

 

 
 
といった感じです。
GETリクエストとPOSTリクエストの使い分けなかなか難しいですねー
 

f:id:kina_kq:20210308104233p:plain