1

いつも使っているフォームで

<form method="post" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">

フォームを自分自身に送信するため。

striptags()誰かがリンクしている場合に使用します:

http://www.mysite.com/page-with-form.php?bla="><script src="http://www.nasty.com/super-nasty.js"></script><a href="#

XSS 攻撃から保護するために、すべてのベースをカバーしましたか、それともより多くのホワイトリスト アプローチを使用する必要がありますか?

ありがとうございました!

4

5 に答える 5

6

htmlspecialcharsの代わりに使用しstrip_tagsます。

于 2009-03-05T06:12:41.627 に答える
3

同じスキーマ/ホスト/パスを参照したい場合は、単純な action="?" で十分です。https://www.rfc-editor.org/rfc/rfc3986#section-4.2によると

相対参照 = 相対部分 [ "?" クエリ] [「#」フラグメント]

      相対部分 = "//" 権限パス - 異常
                    /絶対パス
                    /パスノスキーム
                    /パス空

これは有効な相対 uri です。

于 2009-03-05T06:17:11.307 に答える
2

これに送信して、フォームを自分自身に送信します。

$_SERVER["PHP_SELF"]

そのグローバル変数は現在のページを出力します。クエリ文字列全体が必要になる理由がない限り、

編集

コメントでVolkerKが指摘しているように、PHP_SELF脆弱性がある場合でも、に基づいて独自の小さな変数を記述しPHP_SELF、ページの一部ではないことがわかっている残りのURIを分解することができます。このようなもの:

$file_ext = '.php'; //knowing what file extension your URI is
$page_on = $_SERVER["PHP_SELF"]; //grab this page, with all that junk
$page_huh = explode($file_ext, $page_on); //blow it apart based on file ext
$page_on = $page_huh[0].$file_ext; //attach the leg back onto the URI

echo $page_on;
于 2009-03-05T05:50:00.277 に答える
0

striptags()ストリップがタグ(山かっこを含む「<」と「>」の間の文字)のみの場合でも、誰かがjavascriptを挿入できます。

http://www.mysite.com/page-with-form.php?bla=" onsubmit="return function(){ /*nasty code here*/ }()" style="

HTML、Javascript、CSSで可能なすべてのメタ文字(山かっこ、かっこ、中かっこ、セミコロン、二重引用符、一重引用符など)をホワイトリストに登録することをお勧めします。

于 2009-03-05T05:56:25.927 に答える
0

フォームをそれ自体に送信したい場合は、アクションを空のままにしてください。

<form action="" method="POST">
...
</form>
于 2009-03-10T03:59:02.203 に答える