0

コード監査レポートに対してコードを修正しています。構文を持つ行に対して「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());

繰り返しますが、これを修正する方法がわかりません。問題は、ツールによって報告された機密データの漏洩と同じです。

4

2 に答える 2

0

content.toString() は適切に検証する必要があります。ESAPI を使用して厳密に検証します。応答に直接書き込むことは非常に脆弱であり、入力としてリクエストを持つメソッドからデータが出力された場合、その 2 倍の脆弱性があります。重大なセキュリティ問題。

于 2012-06-29T09:52:48.680 に答える
0

コメントで述べたように、コメントがコード自体に関係しているとは思いませんが、機密データの公開に関係しています。私は PCI-DSS ドキュメントを読みましたが、それがどのようにコーディングされるべきかについて何も述べていないことを覚えています (良い慣行に関係なく)。ご自身で利用可能なすべてのPCI ドキュメントを参照できます。それは難しい作業です。より良いアプローチは、コンサルタントが何を意味したかを見つけようとすることです.

どこに問題があるのか​​わからない場合、何かを修正することは本当に困難です。

于 2012-06-18T14:32:01.573 に答える