データベースにレコードを挿入するフォームが送信され、操作が成功した場合、リダイレクトを実行してから、URLにいくつかのパラメーターを渡して、新しく挿入されたレコードをヘッダーメッセージ(つまり、「挿入に成功しました」)とともに表示します。 。
response.sendRedirect(yPage + "?pid=" + ipd + "&feedback=" + form.getFormFeebackSB() );
次に、次のようにjspで表示します。
<c:out value="${param.feedback}" />
操作をべき等にしたいので、転送の代わりにリダイレクトを使用します。挿入が成功した後に更新を押したユーザーを使用した場合forward
、ほとんどの場合、警告ポップアップで[再試行]をクリックすると、挿入が重複していました。
その後、IT部門は、私にXSSの脆弱性があることを発見しました。
page.jsp?feedback=%3Cscript%20type=%22text/javascript%22%3Ealert%28%27xss%27%29;%3C/script%3E
だから私はこれに変更しました:
<c:out value="${param.feedback}" escapeXml='true'/>
<br>
しかし、FeedbackSBのいずれかがエスケープされ、ヘッダーメッセージが表示されるようになりました。
Insert was successful<br>An email was sent to Joe<br>Now Complete the XYZ Form;
送信をべき等に保ち、XSSから保護しながら、メッセージをユーザーに返す標準的な方法は何ですか?
編集:
Flash Scopeを検索して、このhttp://blog.smartkey.co.uk/2011/01/implementing-flash-scope-in-java-web- applications /に出くわしました 。私のアプリケーションは、フレームワーク、そのリンクで言及されているフィルターは簡単に組み込むことができ、非常に少ない労力でフラッシュスコープを実装することができました。