1

スーパーグローバルを使用する利点は何$_SERVER['PHP_SELF']ですか?

4

1 に答える 1

15

$_SERVER['PHP_SELF']ドメイン名を含めません (または含めるべきではありません)。これには、スクリプトが呼び出された URL のパス コンポーネントが含まれます。

その使用は、主にクロス サイト スクリプティングの脆弱性を導入することです。

これを使用して、フォーム タグのアクション属性を入力できます。

<form method="post" action="<?=$_SERVER['PHP_SELF']?>"></form> 

私があなたのページを呼び出すと:

your-file-that-uses-php-self.php/("><script>eval-javascript-here</script>)

括弧内のすべてが urlencode されている場合、コードをページに挿入できます。そのリンクを他の誰かに送信すると、あなたのサイトのブラウザーでそのコードを実行することになります。

編集: XSS 攻撃に対して安全にするには、次を使用しますhtmlspecialchars

<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">...</form> 

編集 2:この$_SERVER変数はインターネット上の例で頻繁に誤用されているため、HTML リファレンスを読み逃さないでください: その URI は可能な限り短い相対 URI であるため、action 属性を空のままにしておくことができます:

<form action="" method="post" >...</form>
于 2010-08-10T06:28:55.943 に答える