次の問題により、今四半期は PCI-DSS 準拠を満たすことが困難です。
ブラウザに次のように入力すると...
http://www.mygarble.com/main/Community/Chat?command=CHAT_MESSAGE&displayname=%22%3E%3Cscript%3Ealert%28123%29%3C%2Fscript%3E%22
...応答し、その結果、確認できない何らかの理由で、ブラウザのアドレス バーの URL が次のように変更されます。
http://www.mygarble.com/main/Community/Chat?command=CHAT_MESSAGE&displayname="><script>alert(123)<%2Fscript>"
元の URL でエスケープされた文字の一部が、エスケープされていない文字に置き換えられていることがわかります。
その理由は、FireFox は、サーバーがどのように応答したとしても、サーバーが応答したときに、アドレス バーの URL を読みやすくするために自動的に再フォーマットするためです。私はそれについて私ができることは何もないと彼らに言いました。ただし、公平を期すために、次の URL を試してみると...
http://www.google.com/%22%%203E%3Cscript%3Ealert%28123%29%3C%2Fscript%3%20E%22
...Google サーバーが応答しても、ブラウザは URL を変更せず、同じままです。
http://www.google.com/%22%%203E%3Cscript%3Ealert%28123%29%3C%2Fscript%3%20E%22
そして、彼らにはポイントがあります。
一体何が起こっているのでしょうか?問題を絞り込みました。空のテキスト ファイルを要求するだけで、その後に意味のないクエリを追加すると...
http://localhost/http.mygarble.com/hello.txt?displayname=%22%3E%3Cscript%3Ealert%28123%29%3C%2Fscript%3E%22
...見よ、ローカルサーバーが応答すると書き換えられる:
私はこれを Fiddler で実行しましたが、不都合なことは何も見られず、書き換えエンジンをオフにしました。私はApacheを実行しています。
さらに混乱を招くのは、ブラウザによって応答が異なることです。タイピング...
http://localhost/http.mygarble.com/hello.txt?displayname=%22%3E%3Cscript%3Ealert%28123%29%3C%2Fscript%3E%22
...Chrome への変換:
IE では、URL はまったく同じままです。Opera では、アドレス バーをクリックしない限り、クエリ文字列は削除されます。これは、ブラウザーが応答時にアドレス バーの URL を読みやすくするために自動的に変更するという私の信念を裏付けるものです。Safari は、IE と同様に、URL だけを残します。
手がかりを得るために、Google の応答を確認します。応答時に URL に干渉しないようにブラウザに指示する HTTP ディレクティブはありますか。
どんな助けでも非常に感謝しています!
敬具、
ジェームズ