ハイジャックやCSRFについて

まあつまりハイジャック対策やCSRF対策なんですが…
1.id、passを入力して認証、ログインしている間ずっとPOSTでidpassをランダムにいじって作ったオリジナル変数を引き継いでいく手法
2.id、passを入力して認証、クッキーにセッションidもしくはそれっぽいものを保存して確認する手法
これをガッチャンコすれば堅いと思うんです。


1の回答者goodvnさんのところに上がっているワンタイムチケットを作ろうとしてたんですけど、なんか不安で、それ以外になんかあるかなーとおもって質問したんですが…それぐらいだよなぁ…

CSRFが心配なんだけど、時間短くするしか方法ないもんなあ。$_SERVERはあてにならんし。
改変不可のユーザ変数ってなんかありましたか?

PHPで(他言語でもいいですが) 1.id、passを入力して認証、ログインしている間ずっとPOSTでidpassをランダムにいじって作ったオリジナル変数を引き継いでいく手法 2.id、passを入力して認証、クッキーにセッションidもしくはそれっぽいものを保存して確認する手法 2がphpでは一般的な手法だと思いますが、この二つの方法でのメリットデメリットをセキュリティ方面で教えてください。 できればデメリットを中心に教えてもらえると助かります。 1のidpassをランダムにいじって作ったオリジナル変数(イメージ) $subid=md5($id+$pass); $subid=substr($subid,1,5); if($subid==$_POST['subid']){}