ホーム > 日記 > PHP_SELFではなくSCRIPT_NAMEを利用しましょう

PHP_SELFではなくSCRIPT_NAMEを利用しましょう

PHP_SELFにはPATH_INFOも含まれるのでSCRIPT_NAMEを利用しましょう。
またPHP_SELFをエスケープせずそのまま出力している場合XSS脆弱が存在します。
PHP_SELFはそのまま出力できない
ServerName example.jp
DocumentRoot直下に以下の内容のindex.phpを置いた際の出力です。


<?php
var_dump($_SERVER['PHP_SELF']);
var_dump($_SERVER['SCRIPT_NAME']);
?>

xdebugを利用しているのでvar_dumpの出力が標準とは異なっています。

http://example.jp/index.php


string '/index.php' (length=10)
string '/index.php' (length=10)

http://example.jp/index.php/


string '/index.php/' (length=11)
string '/index.php' (length=10)

http://example.jp/index.php/a/b


string '/index.php/a/b' (length=14)
string '/index.php' (length=10)

http://example.jp/index.php/a/%e3%83%86%e3%82%b9%e3%83%88


string '/index.php/a/テスト' (length=22)
string '/index.php' (length=10)

http://example.jp/index.php/a/%20b/c
エラー

http://example.jp/index.php/a/b%20/c


string '/index.php/a/b /c' (length=17)
string '/index.php/a/b ' (length=15)

んんん?
これまずくない?

http://example.jp/index.php/a/b%20c/


string '/index.php/a/b c/' (length=17)
string '/index.php' (length=10)
カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。