PHP_SELF のセキュリティ問題を信用しないでください
Jun 13, 2016 pm 12:22 PM
body
html
isset
php
request
self
コード
コピー
安全性
の
質問
コードをコピーします コードは次のとおりです。
<html>
<body> ;?php
if (isset($_REQUEST['submitted']) && $_REQUEST['submitted'] == '1') {
echo "フォーム送信済み!"
}
; ?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="submitted" value=" 1" / >
<input type="submit" value="Submit!" />
</form>
</body>
</html>
コードは正しいように見えますが、隠れた危険があります。 foo.php として保存し、PHP 環境で使用してみましょう
foo.php/%22%3E%3Cscript%3Ealert('xss')%3C/script%3E%3Cfoo
ログイン後にコピー
XSS インジェクション脆弱性です。理由は
にあります。echo $_SERVER['PHP_SELF'];
ログイン後にコピー
'PHP_SELF'<br><br>The filename of the currently executing script, relative to the document root. <br>For instance, $_SERVER['PHP_SELF'] in a script at the address <br>http://example.com/test.php/foo.bar would be /test.php/foo.bar. The __FILE__ <br>constant contains the full path and filename of the current (i.e. included) file.<br>If PHP is running as a command-line processor this variable contains the script <br>name since PHP 4.3.0. Previously it was not available.
ログイン後にコピー
$_COOKIE など、他にも同様の変数が多数あります (ユーザーが Cookie を「操作」したい場合、私たちにできることは何もありません)。解決策は簡単です。
strip_tags、htmlentities などの関数を使用してフィルタリングまたはエスケープします。
echo htmlentities($_SERVER['PHP_SELF']);
ログイン後にコピー
-- 分割 --
上記の例では、常に慎重なコーディング精神を維持する必要があります。 Chris Shiflett は、XSS を防ぐための 2 つの基本的なセキュリティのアイデアをブログで非常にわかりやすくまとめています。 上記を「
入力をフィルターし、出力をエスケープFilter input<br>Escape output
ログイン後にコピー
の記事をご参照ください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

人気の記事
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7297
9


Java チュートリアル
1622
14


CakePHP チュートリアル
1342
46


Laravel チュートリアル
1259
25


PHP チュートリアル
1206
29



Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド
