changeAbout2017-08-15セッションハイジャック?!セッション管理方法IoTセキュリティTwitterGooglePocketセッションとはなんぞや?HTTP通信において、ユーザ管理的なことはどうやっているだろうかと、前々から疑問ではあったのですが、何も知らずにここまできてしまったために、一苦労しました。いうことで、一から勉強しました。HTTPではユーザ管理というより、セッションという概念で管理を行うようです。あるサイトにログインしたら、サイトからセッションIDを付与してもらい、そのIDを使ってアクセスすることで、特定のユーザーを認識する仕組みをとっているようです。セッション管理には以下2つの仕組みが使われているようです。URLリライティングCookieURLリライティングここはちょいとまだ勉強不足なので後日追記します。基本的にはURLにセッションIDを載せて管理する方法です。http://xxxx.jp/index.php?session_id=123456ってな感じで。この場合、このsession_idが予測可能なものだったりすると、簡単に攻撃者に推測されてセッションを乗っ取られる可能性があります。それをセッションハイジャックと呼びます。CookieについてURLにセッションIDを載せちゃうのは宜しくない、ということでCookieを使いましょうと。cookieというのは、HTTPにおいてWebブラウザとWebサーバ間で状態を管理するプロトコル、またはそこで用いられるWebブラウザ上に保存された情報のこと。WikipediaCookieを用いたセッション管理の流れ以下のような流れでcookieの設定、使用がなされます。ユーザーがブラウザを通してWebサイトにアクセスする。GET)Webサーバーがサイトの情報を返送する。set-cookie:session_id=12345)ここでブラウザにCookieの情報が設定されます。再度Webサイトにアクセスする。GET+cookie:session_id=12345)2で設定されたCookieの情報を用いてアクセスすることで、Webサーバー側がどのユーザがアクセスしてきたか判断できます。この仕組みを使うことで、ユーザーの識別を行うことができ、cookie情報が生きている間は、再度ログインをすることなしに、アクセスすることが可能になります。Cookieのオプションしかしながら、このままでは先ほどのURLリライティングと同じように、Cookieないに記載されたsession_idが推測可能な値だったりした場合、このsession_idを偽装してセッションを乗っ取ることが可能になります。(セッションハイジャック)それでは宜しくないので、Cookieには対策が施されています。1つは有効期限の設定です。set-cookieで値を渡す時に、有効期限を設定できるオプションがあります。それがexpiresです。以下のように値を入れることで設定が可能です。GMT;こうすることで、session_idの値の有効期限を定めることで、危険にさらされる時間が有限となり、リスクを低減することができます。2つ目はHTTPS通信時にしかcookieのやり取りはしないよ設定です。これも同様にset-cookieで値を渡す時にセキュア設定というオプションを付与することで可能になります。set-cookie:session_id=12345;secure;このように指定した場合、cookieを使用するのはHTTPS通信を使用している時のみとなります。HTTPS通信では通信の内容は暗号化されますので、cookieの情報も見れなくなります。そのため、より安全なセッション管理を行うことが可能となります。これでようやくWebアプリケーションの仕組みがなんとなく理解できた気がする。2019-03-18SDRで使えるセルラーOSS先日、IoTSecJPでLTEに関するネタで登壇させていただきました。”LTEFuzz”について新年早々面白そうな論文が発表されたので読んでみました。昨年の7月に転職して丁度1年が経ちました。はてなブログProセキュリティ、無線、IoT、5Gなどの技術的な内容から転職などのキャリア形成について気が向くままに書いてます。(2)スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。