あるサイトでのページでフォーム入力し、そのサイト内の別ページへポストして結果を表示したい。ただし別サイトからのポストはなるべく防ぎたい。
↓
リファラをチェックして、何もなければ見逃してやる。リファラがある場合、それが他サイトだったらアウト。
これでいいんだろうか。
if( isset( $_SERVER['HTTP_REFERER'] ) ){ //もしリファラがある場合 $parse_referer = parse_url( $_SERVER['HTTP_REFERER'] ); if ( strcmp ($parse_referer['host'], $_SERVER['HTTP_HOST'] ) !==0 ){ //リファラとHTTP_HOSTを比較して異なった場合はアウト die("アウト!"); } }
die()を以下に書き換え。example.com/post.php に記述し、別サイトから直接来たアクセスを example.com のトップへ転送することを想定。
header('Location: http://'. $_SERVER['HTTP_HOST'] ); exit;