勉強したことのメモ

webプログラマが勉強したことのメモ。

$_SERVER['PHP_SELF']に脆弱性あり

      2014/05/19

formのaction属性とかページングのリンクとかで、

<form action="<?=$_SERVER['PHP_SELF'];?>">
<a href="<?=$_SERVER['PHP_SELF'];?>?page=<?=$page;?>">link</a>

と使ったりするけど脆弱性があるらしい。

■ソース
<html>
<head>
</head>
<body>
<form action='<?=$_SERVER["PHP_SELF"];?>' method="post">
<input type="button" value="button">
</form>
</body>
</html>

http://aaa.com/index.phpに上記を記述したとして、
http://aaa.com/index.php/'><script>alert(1);</script>'
というURLを叩くとブラウザによってはアラートが出てしまう。

どうも$_SERVER["PHP_SELF"]はクエリも取得されてしまうっぽい。

__FILE__か$_SERVER["SCRIPT_NAME"]で使うようにする。

■参考サイト
http://d.hatena.ne.jp/geek-it/20120229/p1

 - PHP

  関連記事

PHPで一括出力ではなく、ひとつずつ順次に出力する方法

PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...

短縮URL(リダイレクトページ)

<? /* 管理画面とあわせて使う。 short_url直下にこのphpを ...

日付と時間のピッカー

ここだとbootstrap使用だけど、他に良さそうなものがあったのでメモ。 ■参 ...

PHPで指定月の月末日を取得

今月の、だったらdate('t')でいくけど指定月の場合は どうしたらいいのか分 ...

MySQLiでSELECT文

MySQLiでSELECT文 ■データ +--+------+ | id | p ...

PHPで%sとか%dとか

PHPで探し物していて%sとか%dとかいった記述があり 何これとなったのでメモ。 ...

PHPでデータをファイルキャッシュさせる(Cache_Lite)

最近携わった案件でPHPでファイルキャッシュをしているシステムがあった。今までフ ...

AjaxのJSONP使用でPHPで作った配列をJSに返す方法

AというサイトからBというサイトにAjax通信し、Bの方ではMySQLに接続して ...

MySQLで重複を除く

ユニークな値を取り出したいときに使う。 DISTINCT(ディスティンクト) S ...

composerでライブラリのインストールとインストール時のエラー

composerでライブラリをインストールする際に「The following ...