#本記事ついて
プログラミング初心者がセキュリティに関する知識を学んだので、その備忘録として載せております。
どうかお手柔らかにお願いいたしますm (- -)(_ _)ペコリ
##脆弱性
アプリケーション上で悪意のある者に攻撃を仕掛けられる際の弱点
##被害の想定をすることは重要
脆弱性を作り出さないために開発時にセキュリティを考慮した実装が必要
→未然に対策をしておく
##JavaScriptによるセキュリティ攻撃
JavaScriptはクライアント側で動くプログラミンング言語なので、ユーザーがwebアプリケーションに悪意のあるJavaScriptのプログラムを埋め込めば、そのプログラムを実行されてしまう恐れがある。
##XSS(クロスサイトスクリプティング)
JavaScriptを利用した攻撃方法。
悪意のあるJavaScriptプログラムを埋め込みそのサイトの利用者を攻撃する。
##スクリプト
「コードを書く → すぐに動かす 」ことができるプログラム
書いてすぐに実行できるプログラム
##スクリプティング
XSSのうち、スクリプトを埋め込んで実行させること
##攻撃する多い理由
ユーザーの個人情報などを悪意のある人のサーバーなどへ送付するようにスクリプトが埋め込まれていることが多い。
##反射型XSS(URLをクリックしレスポンスがあると即座位にスクリプトが実行)
ユーザーが悪意のあるURLをクリックすると脆弱性のあるwebアプリケーション上でスクリプトが実行されるようにする方法。
①ユーザーにURLをクリックさせる
②ユーザーがクリックするとアプリケーション上でスクリプトが動く
③スクリプトが発火すると攻撃者のサーバーへ個人情報が送られる
→ユーザーがクリックすると攻撃者が仕込んだスクリプトが動き、攻撃者のサーバーへ個人情報が送られる
##格納型XSS
悪意のあるスクリプトを脆弱性のあるwebアプリケーションの投稿などに埋め込み、ユーザーがそのwebアプリケーションに訪れた際にスクリプトが動作する方法
①攻撃者がwebアプリケーション上で、フォームからスクリプト付きの投稿をする
②ユーザーがスクリプトの埋め込まれた投稿のあるページを訪れるとスクリプトが発火
または画像にマウスを合わせると発火
③スクリプトが発火すると攻撃者のサーバーへユーザーの個人情報が送られる。
反射型
検索欄に入力するだけ実行される
格納型
投稿に入力するだけで実行される
##XSSでの被害が多くの割合を占める
XSSへの対処は最優先で考える
##XSSが発生する主要因
フォームから入力されたスクリプトタグ()などがスクリプトとしてそのままブラウザに反映されてしまうことが挙げられる。
##文字参照
・ブラウザ上で表示できない特殊文字を表記する際に用いられる記法
・特殊文字はブラウザで表示できず特殊文字には変換できないので、特殊文字を文字参照にして表示すれば外部から埋め込まれたスクリプトが実行されることはない。
・特殊文字を文字列としてブラウザ上に表示するには文字参照を用いる。
##Ruby on Railsでの主要な対処方法
・ビューファイルにおけるヘルパーメソッド<%= %>。ヘルパーメソッドを用いることでXSSの対策を行うことができる。
(フォームを送信する際にヘルパーメソッドを使うがXSS対策がなされている)
・ヘルパーメソッドは特殊文字をエスケープできる。
・非同期投稿で表示する際にはヘルパーメソッドを用いないのでエスケープできないので
文字列として表示できない。しかし、リロードすることで特殊文字はエスケープされて反映されている。
→他のユーザーのブラウザ上で影響を及ぼすことはない。
##サニタイジング
非同期投稿を実装しているJavaScriptファイルでエスケープできる