安全にリダイレクト処理をしてくれる関数「wp_safe_redirect」について書きましたけども、その中で、「wp_sanitize_redirect」って関数がありましたので、ちょっと気になったので調べました。なんだか関数ばっかり最近見ていますね。あぁ~、とても勉強になります!
「wp_sanitize_redirect」について
Codexの「Function Reference/wp sanitize redirect」を参考にいたしますと、
Sanitizes a URL for use in a redirect. Removes invalid URL characters in the URL parameter.
って書いてあります。例によって和訳できないんですが、たぶん、
リダイレクトに使うURLをサニタイズしますよ。無効な文字列とかあったら削除しますよ。
って書いてあると思います。なるほど~。関数名そのままですね、わかりやすいです!
サニタイズとは
「サニタイズとは – IT用語辞典 Weblio辞書」から引用しますと、
サニタイジングとは、テキストデータ上の「&」や「>」など特殊文字を一般的な文字列に変換する処理のことである。サニタイジング(sanitizing)はもともと「消毒する」「無害化する」などの意味を持つ英語である。
文字列を無害化する、ということですね。なぜ無害化しないといけないか、といった概要も「サニタイズとは – IT用語辞典 Weblio辞書」から確認することができます。・・・確認が面倒だと思いますので、要は、入力フォームを用意したとして、「この入力フォームに、なんかURLを入れてください~」みたいに募ったとして、そこに入力されるコードって、人それぞれ意図が「ある」「ない」に関わらずいろいろあるんで、たとえば悪意のあるコード(javascriptでなんか重要なデータを取得、など)が入力された場合には、それが実行されないようにしようっていう意味だと思います。・・・やっぱり、参考リンクを確認された方がよいでしょうね。。
というわけで、コードの書き方などは以下です。
コード(Codexからサンプルコードを参考)
wp_sanitize_redirect($location);
パラメーター
$location → リダイレクトさせるURLを入れればOK
関数の処理はこうなっている
if ( !function_exists('wp_sanitize_redirect') ) : /** * Sanitizes a URL for use in a redirect. * * @since 2.3 * * @return string redirect-sanitized URL **/ function wp_sanitize_redirect($location) { $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location); $location = wp_kses_no_null($location); // remove %0d and %0a from location $strip = array('%0d', '%0a', '%0D', '%0A'); $location = _deep_replace($strip, $location); return $location; } endif;
「preg_replace」でおおよその無効とされる文字列を置換して除去してますねぇ。他にもいろいろ気になる関数はありますけど、また別機会でメモしようと思っています~。
このページを共有する