2016-03-29 7 views
-2

私は自分のウェブページの1つで、次のようなHTML構文で動作するPHPページを提供しています。クロスサイトスクリプトはPHPフォームでは動作しません

<form name="form" action="test.php" method="get"> 

私は

<form name="form" action="<?php echo htmlspecialchars('test.php') ?>" method="get"> 

にこれを変更したが、それでも私はアドレスバーに次のURLを入力すると、それがブラウザに出力

http://www.example.com/test.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E 

http://www.example.com/test.php/"><script>alert('hacked')</script> 

あります間違っています。またはクロスサイトスクリプティング。私は間違っているmをガイドしてください。

+1

あなたは、クロスサイトスクリプティングの概要とその動作を完全に誤解しています。 'htmlspecialchars( 'test.php')'を実行する理由はありません。 – ceejayoz

+0

XSSを防ぐには、URLからの入力を検証する必要があります。あなたのページが静的で、そこから変数を受け入れない場合は、何も検証する必要はありません。あなたのPHPコードでやっていることは、 'http://www.example.com/test.php/%22%3E%3Cscript%3Ealert( 'hacked')%3C/script%3E'を入力することとは関係ありません。ブラウザのアドレスバー。ブラウザとサーバは別個のエンティティであり、ブラウザはその内容を解釈します。 – scrappedcola

+0

'action =" "' - そこに。 –

答えて

0

ページにユーザー入力を直接入力しないでください。あなたはいつも最初にそれを消毒したい。

推奨される方法は、ユーザー入力をホワイトリストに登録することです。これは、無効な属性ではなく有効な属性をチェックすることを意味します。

最も安全なことは、ホワイトリストを満足するものに変換しようとする代わりに、ホワイトリストを満たしていないすべての入力を拒否することです。

詳細については、OWASPのサイトを参照してください。 Hereはホワイトリスト入力のガイドラインです。

関連する問題