![](/img/trans.png)
[英]how to replace all occurrences of a string inside tags <> using regex in java
[英]How to regex-replace all occurrences of ${…} by <c:out value=“${…}” />
我有帶有XSS漏洞的不受保護的JSP。 我需要替換所有${...}
字符串這還不是里面<c:out value="${...}" />
由標簽<c:out value="${...}" />
。
例如,
<select>
<option value="${foo}">label</option>
</select>
${bar}
<c:out value="${message}" />
需要用正則表達式替換為以下內容:
<select>
<option value="<c:out value="${foo}" />">label</option>
</select>
<c:out value="${bar}" />
<c:out value="${message}" />
聽起來您的起始文本中混合了<c:out value="${...}" />
和${...}
。 如果是這樣,您可以嘗試如下操作:
str = str.replaceAll(
"(?:<c:out\\s+value=\")?\\$\\{([^}]*)\\}(?:\"\\s*/>)?",
"<c:out value=\"\\${$1}\" />"
);
我對Java regex語法有些生疏,因此請檢查我是否正確使用了反斜杠。 否則,我認為這會起作用。
正則表達式不是需要上下文時使用的工具。 但是,只需將兩個<c:out value="${...}" />
實例替換為${...}
,然后將所有${...}
替換為兩個步驟,就足夠簡單到<c:out value="${...}" />
。
常用表達
\${[^}]+}
<c:out value="\${[^}]+}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.