スーパーグローバルを使用する利点は何$_SERVER['PHP_SELF']
ですか?
質問する
1170 次
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 に答える