前提
WordpressでPHPを使って記事にカスタムフィールドを追加するために、update_post_meta
を使っています。
###実現したいこと
セキュリティ強化のため入力値のホワイトリストを作りたいです。
ホワイトリストは下記ソースコードの$lists
です。
ここにあるURLが送信されたときだけ、カスタムフィールドにそのURLを登録したいです。
しかし、ホワイトリストにないものまで登録されてしまったり、なかなかうまくいかない状況なので、質問させて頂きました。
該当のソースコード
ユーザーがフロントエンドで入力するformのテンプレートに下記を記載してます。修正点を教えて頂ければ幸いです。お詳しい方、宜しくお願い致します。
PHP
1 $input_url = $_POST['input_url']; 2 $lists = [ 3 '^http?://example.com/[^/]{10}$', 4 '^http?://example.net/[^/]{20}$' 5 ]; 6 foreach ( $lists as $list ){ 7 if( @preg_match( '|'.$list.'|', $input_url ) ) { 8 if ( isset($_POST) && $_POST['input_url']!='' ) { 9 update_post_meta( $post_id, 'input_url', $_POST['input_url'] ); 10 } 11 } 12 } 13
###環境
PHPは最新で、Wordpressは4.9.4です。