カテゴリー: スニペット,
ボットが検索クエリを投げてくるんですよね、「eval」含んでるアレ。
検索はただでさえ重たい動作だというのに、毎度ボットに DB select させる理由もなく。
functons.php などに記載。
/*
* 特定キーワードを含む検索クエリは即中止
* https://saboten24.net/2018/12/21/post622/
*/
function my_search_filter( $query ) {
if( strpos($query->query_vars['s'],'eval') !== false ){
wp_die('Hello robots.');
}
}
add_action( 'pre_get_posts','my_search_filter', 1 );
当サイトにも入れてみました
動作デモはこんな感じ
https://saboten24.net/?s=/module/action/param1/${@print(eval($_POST[c]))}
「eval」以外には使えなさそうでもありますが、長いNGキーワードとかのその他用途でも使えそうではあります。
「%2F%2F%5Cthink%5Capp%2Finvokefunction」なんてのも出てきたので。
複数キーワードのと、大文字小文字に関係なく判定すべきなので strpos から stripos に変更。
/*
* 特定キーワードを含む検索クエリは即終了
* https://saboten24.net/2018/12/21/post622/
*/
function my_search_filter( $query ) {
$word = '';
if( stripos($query->query_vars['s'],'eval') !== false ){
$word = 'eval';
} else if( stripos($query->query_vars['s'],'invokefunction') !== false ){
$word = 'invokefunction';
} else if( stripos($query->query_vars['s'],'admin') !== false ){
$word = 'admin';
} else if( stripos($query->query_vars['s'],'think') !== false ){
$word = 'think';
}
if( $word !== '' ){
wp_die('Error: 禁止キーワードを含んでいるため検索できませんでした');
}
}
add_action( 'pre_get_posts','my_search_filter', 1 );
関連記事はまだありません