たくろぐ!

世界一のチラ裏

安全なWebサービスの作り方〜同一オリジンポリシー、CORS編〜のスライドを作った(第2幕)

前回の記事

takkuso.hatenablog.com

今回の対象範囲

同一オリジンポリシー

受動的攻撃に対するブラウザの防御戦略のこと。

受動的攻撃にはログイン中の利用者に同一オリジンの正規サイトにアクセスさせて不正操作(CSRF)したり、
正規サイトからのレスポンスによりブラウザを介して攻撃するXSSやHTTPヘッダインジェクションなどがある。

サイトをまたがった攻撃で同一でないオリジンからのアクセスを禁止するブラウザの制限機能(ポリシー)である。

オリジンとはプロトコル、ホスト名(サブドメイン)、ドメイン、ポートのことで、
これらが全て同一であれば同一オリジンと言うことができる。

CORS(Cross-Origin Resource Sharing)

同一オリジンポリシーの制限を超えたデータのやりとりをするための仕様のこと。

  • XMLHttpRequestを使う(それ以外でもOKだが一般的?)
  • HTTPヘッダにパラメータを付与する

スライド

docs.google.com

まとめ

今回も7分程度の発表で詰め込んだのである程度の基礎知識がないと何を言ってるのかわからない状態になったかもしれない。

要望にもあったが実際に動かしたものを見たいと言われた。

次回は内容は薄めにしてデモプレイをしようかな。

安全なWebサービスの作り方〜HTTP、セッション編〜のスライドを作った(第1幕)

きっかけ

ミラスタの事務所に行った際に机にタイトルの本があったので見せてくれと言ったら社長からこれで次の勉強会でLTやってみたら?と言われた。

二つ返事ではなかったが、用事を済ませた後その足で本屋に行って同じ本を買い、せっかくの機会なのでLTをやります!と社長に伝えた。

楽しかったこと

まだ3章だけなので全然読んでいないが、レイヤーを意識して読むことが多かった。

アプリケーションレイヤーで起こりそうだなとか、プレゼンテーションレイヤーでこの脆弱性を担保しているのかとか。

学んだこと

あるものを適切に使うことで脆弱性の混入を防ぐことができる。

先人の知恵だったり、優秀なエンジニアが作ったものだからそれに乗っかろうとすることが大事。

これが「巨人の肩の上にのる矮人」みたいなことなのかなと。

ja.wikipedia.org

セッションの理解を深めるためにRails tutorialでセッション機構を実装するという目的ならいいけど、
無駄に時間をかけて自作できることよりもあるものを適切に使うことを重視するのが大切なのでは?と思った。

スライド

発表時間が5分目安だったから内容が結構薄いし、自分なりに端折ってまとめたから間違ってる部分があるかも。

もし間違いを見つけたら教えろください。

docs.google.com

まとめ

久々にLTをやることになってスライド作るのも時間をかけたし、実際に動画をとって時間を測ったりして結構準備が大変だった。

だけどコンフォートゾーンを抜け出せたような気がするのでまたこういう機会があれば二つ返事でやります!と言っていきたい。

Rubyistが学ぶPHP

htmlspecialcharsメソッド

エスケープ処理してくれるメソッド。

Ruby(というよりRails)は何もしなくてもエスケープ処理される。

qiita.com

@$_POST['key']

@は例外処理してくれる。

stackoverflow.com

$_POST はスーパーグローバル変数

wepicks.net

Ruby(というよりRails)の場合は params[:key] でGETでのクエリパラメータもPOSTのヘッダにあるパラメータも取得できる。