アウトプット10/29
<今日のカリキュラム>
・セキュリティの基礎知識
<メソッド整理など>
・XXS攻撃
クロスサイトスクリプティングといい、脆弱性のあるアプリケーションに JavaScriptを埋め込むことで個人情報を抜き出すなどの攻撃をいう。
・反射型
URLをクリックすることでスクリプトが発火するタイプのXXS
・格納型
投稿などにスクリプトを埋め込むことで、サイトに訪れたときにスクリプトが発火するタイプのXXS
・文字参照
悪意のあるスクリプトが埋め込められても認識しないように、タグなどのサイトに表示されない特殊文字をあえて文字列としてブラウザ上に表示することで攻撃から守る。
サイト利用者の個別識別番号であるセッションIDを乗っ取られること。他にはセッションIDを固定することで正規利用者が故意のIDで認証を行う方法もある。対応はセッションIDは都度変更すること。
・SSL
Secure Socket Layerの略で、ネット上の通信を暗号化する技術のこと。SSLに対応しているwebアプリケーションは「https://」から始まる。
セッションハイジャックなどにより、正規利用者になりすましてリクエストを送ることをいう。XXSはクライアント側の脆弱性。CSRFはサーバーサイド側の脆弱性。
・トークン
一度だけ使われるパスワードのこと。ユーザー認証などに用いられる。
URLなどにSQL文の断片を埋め込むことでデータベースを改竄したり権限を変更したりすること。
・プレースメントホルダー
ユーザーの値が入力されるまでの一時的な仮引数のようなもの。これによりパスワードの認証をされることを防ぐ。
<分かっていなかったこと>
・セッションとクッキー
webサービスにおいて情報を一時的に保存しておく仕組み。セッションがハッシュの形式でクッキーという保存場所に保存される。
<理解していないこと>
・「placeholder」は、文字をうっすら表示する時に利用
・送信ボタンの実装
・references型/外部キー制約
中間テーブルのマイグレーションファイルに記述する。
t.references :room, foreign_key: true
t.references :user, foreign_key: true
・ルーティングのネスト
・mergeメソッド
・N+1問題
・fill_inメソッド
・have_selector,have_contentの違い
指定したセレクタがあるかないかを判断するマッチャがhave_selector。have_contentは指定した文字列があるかどうかを判断するマッチャ。
・クラスメソッドとインスタンスメソッド
クラスメソッドではインスタンス変数(@〇〇)が使えない。
・sliceメソッドとslice!メソッド
array.slice(1) →配列の中から1番目の数値を取り出す。但し配列に影響はない。
array.slice!(1) →配列の中から1番目の数値を取り出す。取り出した数値は配列から削除される。
・afterメソッド
任意の処理の後に指定の処理を実行するメソッド。テストコードでFactoryBot後に画像を保存するコードを作るときなどに使用する。
・requireメソッド
ライブラリやクラスを読み込むための記述
・whileメソッド
無限ループを作るメソッド。条件式が真である間は処理を繰り返す。
・DOM
ドキュメントオブジェクトモデルのこと。 HTMLを解析し、データを作成する仕組み。JavaScriptではHTMLを階層として捉えて変換したデータと捉え、そのHTMLの階層を取得し、操作することでプログラムを動かす言語。
・devise_parameter_sanitizerメソッド
deviseGem時に自分で新しく設定したカラムもストロングパラメーターに含めることが可能。application_controller.rbに記載する。
・ストロングパラメーター
指定したキーのみをもつパラメーターのみを受け取るように制限するもの。
javascriptからAjaxによるリクエストを送るためのオブジェクトのこと。
・renderメソッド
JSON形式でデータをサーバーから返却する際には、
render json:{ post: post}
とcreate定義に記載する。
・onload
XMLHttpRequestで定義されているプロパティで、レスポンスの受信が成功した場合に呼び出されるイベントハンドラーのこと。
<気付き>
結構課題図書に時間がかかっているので移動時間も読む時間に当てよう。