私は私のサイトのプロフィールページにいくつかのカスタムユーザーオプションを追加しました、そしてユーザーが自分自身を変更しても大丈夫です。これらのオプションは独自のセクションにあります。ユーザーは読み取り権限を持ち、バックエンドにアクセスして自分のプロファイルの設定を変更することができます。
ユーザーに直接変更させたくないというユーザー別のオプションがあります。そのオプショングループとセクションを作成するコードがあり、そのユーザーが他のユーザーのプロファイルを編集できるかどうかを確認します。それができない場合、そのセクションと設定はWordPressに登録されていません(したがってプロファイルページには表示されません)。適切な権限を持つ人だけが、バックエンドを介してプロファイルの編集ページにアクセスして設定を表示および変更できます。
悪意のあるユーザーが別の有効なプロファイルの更新と共にPOSTデータを追加で送信し、ページに登録されていないがデータベースに存在するオプションを設定することはできますか?この保護はどの程度確実ですか。それに関する既知の問題はありますか?
たとえスニペットであっても、あなたが(利用可能であれば)あなたが作業しているコードを提出するべきです。
しかし、簡単な答えはYESです。
ユーザーのメタデータに関連する入力フィールドがユーザープロファイルページの特定のユーザーロールから隠されている場合、 "attacker"はguessフィールドのmeta_key
と一致する必要があります。彼らが居住したいのです。 頑張ってください!
問題のmeta_key
を推測できた場合は、update_user_meta
またはadd_user_meta
に関連する関数を実行する必要があります。彼らができる唯一の方法は、
...そうすれば、そうでなければユーザーはそれらのユーザーメタフィールドを保存または編集することができます。 隠された 画面上の要求に追加/レンダリングされません。
我々はそれを仮定します、
...そもそも攻撃が発生するリスクを軽減します。
まず最初に、 current_user_can
関数でユーザーメタデータの追加や編集に関連する関数をラップします。
if ( current_user_can('edit_users') ) {
//show input fields function
//allow input fields to be updated function
}
これは現在のユーザが実際にできるかどうかをチェックします edit_users
which デフォルトでスーパーアドミニストレータとアドミニストレータだけが利用できます あなたが選択した別のユーザロールにこの機能を許可しない限り。
これはあなたがしたいと思うかもしれない唯一のチェックではありませんが、確かにそれは安全のために含めるべき最も重要なものの一つです。