2011-01-27 6 views
0

私は知りたかったので、これはXSSの脆弱性ではないでしょうか?そのような結果を出力しないのですか?例えばPHP XSSの質問 - 危険なページに何も出力しないGETパラメータですか?

:その後、

if($_GET['doRedirect'] == "yes") { 
//redirect Page 
} else { 
//dont redirect page 
} 

http://example.com?doRedirect=yes

私はXSSのもののすべてをよく読んで、今少し混乱してイムが、私は、それをよく理解していたと思っています。 XSSは、ユーザー入力がページに出力される場合にのみ可能ですか?

多くの感謝:)

答えて

3

安全でなければなりません。

クロスサイトスクリプティングは、ユーザーが実際にページ上で生成したものを実際に出力した場合にのみ発生します。

次のGETパラメータnameなど、ユーザーの名前に取っていた場合、この例は次のようになります。この場合

<?php 
echo "Hello, {$_GET['name']}. How are you today?"; 
?> 

誰かが<script>alert('Hello, There!');</script>name -parameterを設定した場合、彼らは「、、あなたのドメインでホストされているURL上でJavaScriptが突然動いてしまった。

この例はかなり良質ですが、そのコードを実行できるということは、望むコードを実行できることを意味します。たとえば、ユーザーは、そのURLを介してログインしたすべてのユーザーのユーザー名とパスワードを記録したスクリプトを追加できます。あなたのサイトは本物のように見えますが、持ってはいけないものにアクセスできます。

あなたがについて混乱、またはクロスサイトスクリプティングについての詳細を学ぶことに興味があるなら、これらの質問を見てみましょうは:

2

doRedirect入力パラメータはifであり、他には何もありません。

あなたはこのような何かをしていた場合は、[はい、それは脆弱になりますが:この場合

if($_GET['doRedirect'] == "yes") 
{ 
    //redirect Page 
} 
else 
{ 
    //dont redirect page 

    // Create message to display in the browser 
    $messageToUser = 'You selected '.$_GET['doRedirect'].' for your redirection'; 
} 

あなたが入力に検証を実行する必要があります。

関連する問題