2013-11-23 3 views
11

Webページを処理する必要があります。このウェブページはYII frameworkに基づいており、ログインページはCSRF tokensによって保護されています。ログイン資格情報をPOST methodで渡します。 error 400The CSRF token could not be verifiedというメッセージが表示されます。cURLで盗まれたCookieを使用してCSRFをバイパスする

私はこの保護を通過する方法がわかりません。私はそのメカニズムを理解していない。 Chromeブラウザでログインすると、POSTメッセージの表示が表示されます。それは4つのパラメータを持っています:CSRFキー、ログイン、パスワード、空の変数。ブラウザーがサンディングされた正しいCSRFキーを取得する方法

私はこのウェブページのログインとパスワードを持っており、通常のユーザーとしてログインできます。ログインページだけがCSRFに対して保護されています。通常のログインでブラウザで作成したクッキー(その方法)を使用して、cookie to cURLと入力してログインページの後ろにURLsの処理を開始できますか?

+0

CSRFキーにタイムアウトの制限があるため、最後のログインからcsrfキーを使用した場合(2日前)、ログインページにエラーが表示される – kirugan

+0

Chromeで再ログインするたびにCSRFキーが異なります。したがって、私はCSRFキーが1つの使用だと考えています。 – MrMgr

+4

SOLVED:CSRFキーはセッション用に生成され、LOGINページ内にプレーンテキストとして格納されます。ログインページのソースコードからコピーし、POST変数として過去のcURLスクリプトに提供することができます。 CSRFキーはページが更新されるたびに変更されず、KEYはログアウトまで有効です。ログアウトすると、CSRFキーはサーバに送信され、終了します。 – MrMgr

答えて

2

MrMgr Answer。他の人が簡単に答えを見つけるのを助けるためにここに載せました。

CSRFキーはセッション用に生成され、プレーンテキストのLOGINページ内にあります。ログインページのソースコードからコピーし、POST変数として過去のcURLスクリプトに提供することができます。 CSRFキーはページが更新されるたびに変更されず、KEYはログアウトまで有効です。ログアウトすると、CSRFキーはサーバに送信され、終了します。

Source

0

CSRFトークンは、この正確な動作が困難になるための場所です。あなたは、PHPを使ってブラウザであることを欺くためのより良い方法が必要です。これを行うには、すべてのCookieを一般に「Cookie Jar」と呼ばれるものに保存します。 PHPのカールの実装has that capability。このサイトにルーティングされたすべてのカール要求は、今からこのクッキージャーを使用する必要があります。

次は、送信されたすべてのフィールドを取得するためにログインページを解析する必要があります。これには、ユーザー名、パスワード、CSRF、およびその他の隠しフィールドが含まれます。それぞれに値があることを確認してください。あなたが入力してはいけないもの(例えば、隠れた入力)は、ログインページのHTMLを拾い、それらのフィールドをログインPOSTで渡すことができる変数に入れます。また、ログインしたPOSTのリファラーとしてスクラップしたログインページのURLを送ってください。

htmlの解析は面倒なことがありますが、SimpleHTMLDOMのようなライブラリは、CSSセレクタをよく知っていれば簡単にできます。

関連する問題