我正在使用bean在Java EE应用程序中发送邮件。我发送邮件的类是通过xDoclet生成的。类代码如下

public void onMessage(javax.jms.Message message)   {
           MapMessage mapMsg = (MapMessage) message;
           String toEmailAddress = mapMsg.getString("toAddress");
           String ccEmailAddress = mapMsg.getString("ccAddress");
           String from = mapMsg.getString("from");
           String subject = mapMsg.getString("subject");
           String content = mapMsg.getString("body");
   }


现在,我在此类的checkmarx中遇到了一些安全问题,例如-在JMS中对不可信数据进行反序列化

String toEmailAddress = mapMsg.getString("toAddress");
String ccEmailAddress = mapMsg.getString("ccAddress");

最佳答案

基于对JMS中不受信任的数据进行反序列化的Checkmarx查询,在投射时添加try catch块,并检查message是否不是ObjectMessage的实例:

public void onMessage(javax.jms.Message message)   {
 try {
    if !(message instanceOf ObjectMessage){
               MapMessage mapMsg = (MapMessage) message;
               String toEmailAddress = mapMsg.getString("toAddress");
               String ccEmailAddress = mapMsg.getString("ccAddress");
               String from = mapMsg.getString("from");
               String subject = mapMsg.getString("subject");
               String content = mapMsg.getString("body");
    }
 }
 catch {}
 finally {}
}

09-13 12:43