現在の仕事で、とあるサイトのセキュリティ対策をやっています。
まあそのサイトは下請けで作ってるのであんまり細かいことは書けないんですが、
独自に作成されたフレームワークがでかすぎて身動きとれなくなってきてます(涙)
セキュリティ対策を行ったため、外部からの攻撃を受けても大丈夫かどうか、
テストツールを作る必要がありそうなんで、cURLを使ってテストツールを作ろうかと
思いました。(SimpleTestを使ったほうがいいのだろうか?)
ただ、会員サイトなので、ログインしてからじゃないと攻撃する前に
ログインチェックで弾かれるので、とりあえずログインしてから攻撃開始せないかんと。
そこで、今日はまずログインするところまで作ろうと。
cURLは、前の開発でも使ったことがあるんですが(この1年半くらい、WebAPI作成係だった)
全て単発のアクセスで、かつクエリストリングに認証情報を付加してたから、
今回のようにブラウザ上からセッションを使ってログインしてから云々とかしたことなかったんで、
特に何も考えずにcurl_closeしなければいいんかなと思ったら、失敗。
ネットで情報収集を開始すると、以下の情報を見つけました。
これか!と思い、まんま同じ方法を取ってみたのですが、失敗。。。
CSRF対策用のトークンを取得してからログイン処理を行うと、
トークンが存在しないというエラーメッセージが出てくるので、
$_SESSIONと$_COOKIEを確認したら空っぽ。
つまりはセッションが引き継げていない。
また検索をしていて発見したのが、次のサイトでした。
忍び歩く男 – SLYWALKER cURL関数で3つのハードルを乗り越えて投稿する
注意点に、
クッキーファイルは、絶対パス指定しないと、手の届かないところに作られてしまう。 当然そこが書き込み不可ならエラーになる。 あらかじめファイルを作成していないとエラーになる。 ファイル投稿するファイルも絶対パスで。
とあり、これがまさにドンピシャ!Cookieに使用するファイルを絶対パスにしたらOKでしたv(^-^)