コード監査レポートに対してコードを修正しています。構文を持つ行に対して「PREVENT EXPOSURE OF SENSITIVE DATA」と表示されますresponse.getWriter().write(xml.toString())
。コード全体は以下です。
String alertId = request.getParameter("alertId") != null ? request.getParameter("alertId") : "";
String desc=AAAA.getBBBB(Long.parseLong(AAAA.getCCCC(alertId)));
StringBuffer xml = new StringBuffer();
xml.append("<?xml version=\"1.0\"?>");
xml.append("<parent>");
xml.append("<child>");
xml.append("<alertDesc>");
xml.append(desc);
xml.append("</alertDesc>");
xml.append("</child>");
xml.append("</parent>");
response.getWriter().write(xml.toString()); // ISSUE IN THIS LINE
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
私は十分な在宅作業を行い、XSS 攻撃に対してそれを修正することができ、同じために ESAPI を使用しました。しかし、これを修正する方法がわかりません。提案をお願いします レポートには、報告された問題に対して以下のメッセージがあります。「toString()の結果("xml")がWebページ経由で流出」
一日の研究開発の後、saxパーサーがこの場合に役立つことがわかりました。これは、実際には StringBuffer.toString() 構文でのメモリ リークであり、機密データが公開されたり失われたりするためです。しかし、それを実装する方法がわかりません。また、ある場所で、StringBuffer() クラスの代わりに StringBuilder() クラスの使用を見つけました。誰でも私を助けたり、貴重な提案をしたりできますか. 前もって感謝します。
また、別のタイプのコードについても同じ問題があります。それは下にあります。
StringBuffer content = (StringBuffer)file.get("content");
response.setContentLength((int)content.length());
response.getWriter().write(content.toString());
繰り返しますが、これを修正する方法がわかりません。問題は、ツールによって報告された機密データの漏洩と同じです。