PHPで同一ホストからのリクエストなのかチェックする

掲示板などのWEBアプリケーションでCSRF (クロスサイトリクエストフォージェリ)を防止するための手段の1つにどうそ
※外部からのリクエストなのかを調べるだけなので根本的な対策にはならないことがあるので要注意

if (isset($_SERVER['HTTP_REFERER']) === true)
{
//httpかhttpsで始まるかをチェック if (preg_match("/^https*?:\/\/.+$/", $_SERVER['HTTP_REFERER']))
{
if (parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) !== $_SERVER['HTTP_HOST']) {
echo 'エラー<br />リファラーがおかしいです';
exit;
}
}
}
parse_url関数に通す前に簡単なチェックをしているのはparse_url関数に送る文字列がURLでは無い場合にE_WARNINGレベルのエラーが発生するためです