JSTL Form Etiketi EL Enjeksiyonu

Güvenlik sorunum var. Birisi web sitemdeki bir girişten böyle bir değer girmiş. Giriş metni aşağıdaki gibidir:

ADMIN{${sleep(20)}}

Sayfamdaki bir seçimde bu değerleri seçmek ve görüntülemek için bir formum var. Ancak bu değer sayfamı bozuyor. Bu benim JSP kodum:

<form:select path="roleName" class="form-control">
    <form:option value="">
    
        <form:option value="${role.name}">
    

c:out tag works as expected but form:option tag does not work and it throws the following exception:

javax.servlet.jsp.el.ELException: no method corresponding to the one declared in the EL was found  method : 'sleep'
  at weblogic.jsp.internal.jsp.el.FunctionEvaluator.evaluate(FunctionEvaluator.java:65)
  at weblogic.jsp.internal.jsp.el.ELNode$Function.evaluate(ELNode.java:702)
  at weblogic.jsp.internal.jsp.el.ExpressionEvaluatorImpl$ELExpression.evaluate(ExpressionEvaluatorImpl.java:188)
  at weblogic.jsp.internal.jsp.el.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:126)
  at org.springframework.web.util.ExpressionEvaluationUtils.evaluateExpression(ExpressionEvaluationUtils.java:231)
  at org.springframework.web.util.ExpressionEvaluationUtils.doEvaluate(ExpressionEvaluationUtils.java:206)
  at org.springframework.web.util.ExpressionEvaluationUtils.evaluate(ExpressionEvaluationUtils.java:94)
  at org.springframework.web.servlet.tags.form.AbstractFormTag.evaluate(AbstractFormTag.java:50)
  at org.springframework.web.servlet.tags.form.OptionTag.resolveValue(OptionTag.java:247)
  at org.springframework.web.servlet.tags.form.OptionTag.exposeAttributes(OptionTag.java:174)
  at org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag.writeTagContent(AbstractHtmlElementBodyTag.java:48)
  at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:102)
  at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:79)
  at jsp_servlet._web_45_inf._jsp._user.__listuser._jspService(__listuser.java:968)

Bu garip değeri görüntülemek için form: option 'in çalışmasını nasıl sağlayabilirim? Kullanıcıların bu tür tuhaf değerleri girmesini istemiyorum. Ne girdiklerini gösterebilmek istiyorum.

DÜZENLE:

Bulabildiğim tek çalışma çözümü şuydu:

<form:select path="roleName" class="form-control">
    <form:option value="">
    
        
0
@ minion Evet Kullanıcının olduğu gibi görüntülenmesini istiyorum.
katma yazar sedran, kaynak
Beklenen çıktı nedir? role.name işlenen html'nizde ADMIN {$ {sleep (20)}} değerini değerlendirmeli mi?
katma yazar minion, kaynak

6 cevap

C: out'iniz beklendiği gibi çalıştığından, OPTION etiketinin HTML sürümünü kullanmak ve value niteliğini kapalı bırakmak ... için bir yaklaşım olacaktır;


    

Tarayıcı, değer özniteliği kapalı kaldığından bu yana seçenek etiketinin içeriğini gönderir.

0
katma

C: out'iniz beklendiği gibi çalıştığından, OPTION etiketinin HTML sürümünü kullanmak ve value niteliğini kapalı bırakmak ... için bir yaklaşım olacaktır;


    

Tarayıcı, değer özniteliği kapalı kaldığından bu yana seçenek etiketinin içeriğini gönderir.

0
katma

Ayrıca, önce c: set tag ile değişken oluşturmayı deneyebilir ve daha sonra onu 'value' niteliğinde kullanabilirsiniz.


<form:option value="${roleName}">${roleName}
0
katma
Bu güzel görünüyor. Bunu 8 saat sonra işteyken deneyeceğim.
katma yazar sedran, kaynak

Ayrıca, önce c: set tag ile değişken oluşturmayı deneyebilir ve daha sonra onu 'value' niteliğinde kullanabilirsiniz.


<form:option value="${roleName}">${roleName}
0
katma
Bu güzel görünüyor. Bunu 8 saat sonra işteyken deneyeceğim.
katma yazar sedran, kaynak

Bence sorununuzu değerlerden kaçarak çözebilirsiniz. örnek:

<form:option value="${fn:escapeXml(role.name)}">
0
katma
Hayır, bu çalışmıyor. fn: escapeXml, xml etiketlerinden kaçar. Benim değerime göre, xml'e özgü bir karakter olmadığını düşünüyorum.
katma yazar sedran, kaynak

Bence sorununuzu değerlerden kaçarak çözebilirsiniz. örnek:

<form:option value="${fn:escapeXml(role.name)}">
0
katma
Hayır, bu çalışmıyor. fn: escapeXml, xml etiketlerinden kaçar. Benim değerime göre, xml'e özgü bir karakter olmadığını düşünüyorum.
katma yazar sedran, kaynak