0

ここに状況があります: <c:out>DB からのデータを表示するために使用しているページがあり、コンテンツには登録商標としていくつかの特殊文字が含まれています。コードで Java、jsp、jstl を使用しています。登録商標記号は、次のように表示されます。

®

インポートは次のように完璧です:

 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

以下のコードを使用して印刷すると、正しいレジストレーション マークが表示されますが、セキュリティ違反が発生します。

 <c:out escapeXml="false" value="${prName}"/>

ここに : を指定したため、コードをスキャンするためにベラコードを使用していescapeXml="false"ます。ベラコードは、これが脆弱性であることを指摘しています。

したがって、escapeXml を削除すると、次のように表示されます。

 <span class="sup">&reg;</span>

この問題を解決する方法を教えてください。どんな助けでも大歓迎です。

4

1 に答える 1

0

ページでタグを許可しているため、脆弱性として扱われます。

書く代わりに

<span class="sup">&reg;</span>

あなたが書くことができます

<script>alert("Alert");</script>

これは永続的な XSS になります。

データベースからの値にタグを含めないように、コードをリファクタリングしてみてください。それ以外の場合は、データベースからの値がサニタイズされていることを確認してください。

于 2013-07-15T10:07:44.600 に答える