WordPressのプラグインでUser Submitted Postsという、外部からの投稿を可能とする便利なプラグインがあります。
画像アップロードも対応し設置も簡単なのですが、nonceを使用していないというセキュリティ上の問題があります。
サポートフォーラムにもあがっているけどプラグイン自体のバージョンアップはされていないみたい
プラグインファイルを編集し、wp_verify_nonceを追加します。
views/submission-form.php内の9行目あたり
1 2 3 4 5 |
<form id="usp_form" method="post" enctype="multipart/form-data" action=""> //以下の2行をformタグ内で追加する <?php $nonce = wp_create_nonce('my-nonce'); > <input type="hidden" name="_wpnonce" value="<?php echo $nonce; ?>" /> |
user-submitted-posts.phpの266行目あたり
1 2 3 4 5 6 7 8 9 |
//wp_insert_postをwp_verify_nonceのtrue/falseで走らないように書き換える //$newPost = wp_insert_post($postData); $nonce=$_REQUEST['_wpnonce']; if (! wp_verify_nonce($nonce, 'my-nonce') ){ die('投稿できません'); //不正投稿の処理。実際はいきなりdieじゃなくていろいろ必要かも。 } else { $newPost = wp_insert_post($postData); } |
ADs
貴重な情報ありがとうございます。
余計なお世話かもしれませんが、念のため下記細かいバグを指摘させていただきます。
>user-submitted-posts.phpの266行目あたり
で追加されているボックスの8行目、
$newPost = wp_insert_post($postData)
において、最後に;が抜けております。
この記事のお蔭様で大変助かりました。ありがとうございます。
追伸ですが、最初のBOXも、4行目の最後に?が抜けてました。あと余分なスペースも。
—
//以下の2行をformタグ内で追加する
<input type="hidden" name="_wpnonce" value="” />
shingo さま
ご指摘ありがとうございます。
本文のコードを修正いたしました。