有害なリンクをクリックしただけで、重要な動作が行われるのは良くないですね。 投稿者が有害なリンクをクリックしたとき、投稿を削除する意図はなかったでしょうから。 クロスサイトリクエストフォージェリの対策は比較的容易です。 「公開」「削除」等の処理が、正規のルートで実行されたかどうかをチェックすればOKです。 1. 処理を行う直前のページに、トークン(攻撃者に推測されない値)を埋め込む 2. 処理を行うページでトークンをチェックし、 2-1. トークンが正規のものであれば処理を実行する 2-2. トークンが無いor不正ならば処理を実行しない こうすれば、正規のルートで処理画面に到達した場合は、トークンが正規のものなので実行します。 前述の「有害なリンクをクリックする」で処理画面に到達した場合は、 処理を行う直前のページにトークンが無いので、「投稿を削除する」処理は行いません。 CSRF 対策は、実装自体は難しくないのですが、 ウェブアプリ以外では不要なケースがほとんどのため、 ウェブに詳しくないプログラマーがコードを書く場合に CSRF 脆弱性が発生しやすいです。 /** * 関数を知る get_attached_media */ get_attached_media は、投稿に紐付けられたメディアを取得する関数です。 WordPress 3.6 で導入されました。 ---------------------------------------------------------------------- get_attached_media(string $type, int $post_id) $type ... (文字列) (必須) mime type 名 $post_id ... (整数) (オプション) 投稿 ID。省略時は現在の投稿の ID ---------------------------------------------------------------------- // 現在の投稿の画像を取得 $media = get_attached_media( 'image' ); // 投稿 ID 10 に添付された PDF ファイルを取得 $file = get_attached_media( 'application/pdf', 10 ); ---------------------------------------------------------------------- 第一引数 mime type には、image, audio, application/pdf 等を指定します。 第二引数は codex では投稿 ID ですが、投稿オブジェクトを渡しても動作するようです。 get_attached_media() 関数の戻り値は、 WP_Post のインスタンスを配列にキャストしたもの になります。 +------------------- フォーラムから学ぼう ----------------------+ トップページ左下にEdit this entryと有り固定ページ編集にとんでしまう http://ja.forums.wordpress.org/topic/24455 WordPress では、ログインしている場合、それに応じた表示になります。 フォーラムに出てくるページ編集へのリンクや、コメント欄等です。 訪問者にどのように見えるか?を確認するときは、 ログアウトして、ブラウザキャッシュを消すようにしましょう。 ====================================================================== Q & A メルマガ読者からの質問を受けるコーナーです。 正式スタート後に開始します。 質問は mizuno@rescuework.jp までどうぞ。 ================== 次回のメルマガ予定 ======================== 次回は、「sharebar プラグインの CSRF 脆弱性」を取り上げます。 +--------------------------------------------------------------------+ 発行: レスキューワーク株式会社 執筆: 水野 史土 問い合わせ: mizuno@rescuework.jp +--------------------------------------------------------------------+
次回は、「sharebar プラグインの CSRF 脆弱性」を取り上げます。
こちらはアーカイブ公開予定はありません。
新着情報 – メルマガ配信を始めますよりお申し込みください。
Pages: 1 2