魔法使いの卵

WEBエンジニアの卵の成長記録

セキュリティについて少し知見がたまったw

過去にhttpについて少しまとめてみてたっぽい


HTTPってなんやねん - 魔法使いの卵

 

そもそもセキュリティをやってないとどーなんねん。

 

  • 個人情報の漏洩につながる
  • webサイトの内容を書き換えられる
  • ウィルスをばらまく媒体になってしまう
  • webサイトを利用できなくされる
  • ユーザに金銭的損害を与える
  • 信用を失墜してまう

 

 などなどがある。

 

パーセントエンコーディングってなんやねん

url上に表示できない日本語とか特殊文字を表示するために使われる。

スペースは+に置き換えられる。

 

Refererってなんやねん

リファラーって読むらしい。
リクエストメッセージにどこのページからきたのか?
っていう情報をもってるらしい。
ガラケーの時代は大活躍してたみたい。
けど文字数に制限があるからgetで値を渡したりするときは
気をつけないと全部渡せなかったり
自サイトから他サイトにリンクで遷移した際に
自サイトの情報を保持したままってことがあるから
取り扱いは注意が必要みたい。

 

GETとPOSTの使い分けってどうしたらええの

  • GETが参照のみに利用するようにする
  • POSTは秘密情報の送信等に使うようにする

下記項目に1つでも当てはまればpostを使う

  • それはpostを使うべき
  • データ更新などののリクエストの場合
  • 秘密情報を送信する場合
  • 送信するデータの総量が多い場合

  1つでもあてはまらなかったらgetで対応しておk

  ※putとdeleteはapiでよくつかわれるらしい。

 

hiddenパラメータは書き換えられる

入力画面から確認画面に入力情報を渡し
確認画面からDBの処理を走らせる際に
データを渡す時に使うhidden。
hiddenは第三者からの書き換えが行われにくいことと
情報漏洩に対してすごい強いってのがメリット。
1つデメリットは利用者自身によって書き換えることが可能になってる。
問題はこれを対策する必要があるのか?ってところ。
困るのは利用者本人のため他みたいに躍起になる必要があまりなさそう。

 

クッキーを使う際の注意点

クッキーが保持できる値の個数や文字列長には制限がある
クッキーの値は利用者本人には参照・変更できるので秘密情報には向いていない
なのでクッキーに秘密情報はもたせてはいけない

 

じゃあどうするねん?

  クッキーにセッションIDもたせたったらええらしいで
  クッキーに秘密情報はもたせないでセッションidをもたせて
  サーバ側で管理してあげたらええらしいで。

Cookie: PHPSESSID = セッションid

  で、そのセッションidでセキュリィをあげるためにどうしたらええねん

 

セッションidに大切な3つの要件

  1. 憶測できないこと
  2. 強制されないこと
  3. 漏洩しないこと

重要:セッション管理でやってはいけないこと

セッション管理機構を自作してはいけない。
理由:自作することで脆弱性が混入していた例が多々あるためリスクヘッジ

 

セッションidを自作したらあかんことはわかったけど
つくってもろたセッションidって漏洩してもうたら結局一緒やん

 

てか、どうやって漏れんの?

  • ネットワーク的にセッションidが盗聴される
  • クロスサイトスクリティングなどのプリケーションの脆弱性により漏洩する
  • PHPやブラウザなどぷらっとフォームの脆弱性より漏洩する
  • セッションIDをURLに保持している場合はRefereヘッダから漏洩する

 

仮に漏洩してた場合はどうするん?

認証後はセッションIDを変更して使い捨てにすることでセキュリティを担保する。

 

セッションIDについてのわかったけど、クッキーの注意点とかあるん?


クッキーの属性はセキュリティ上重要

・Domain

ブラウザがクッキー値を送信するサーバのドメイン不用意に使ってはいけない属性。Domainで指定した他のサーバにも漏洩するリスクがある。

 

・Secure

Secure SSLの場合のみクッキーを送信
クッキーのSSL送信を保証する目的で使われている。

 

・HttpOnly  
HttpOnly この属性が指定されたクッキーはjsからアクセスできない。
クロスサイト・スクリプティング攻撃から情報を盗まれにくくできる。
そして、HttpOnlyは基本的にセッションIDを扱う際は
保険として必ずつけるようにしたほうがいい。

 

PHPの場合は…

php.inisession.cookie_httponly = On
でHttpOnly属性をつけることができるようになる。

 

おまけ

Googleが最近httpからhttpsに変えたらしいw

なんでもSPDYっていうプロトコルを使うことにしたらしい。

SPDYってなにがすごいん?

複数のリクエストを並列え処理することで

今までよりもパワフルに早く結果を返すことができるらしい