以下行未在我的申请中通过验证。 Netbeans的错误是......
Bad value " /content/edit" for attribute href on element "a": WHITESPACE in PATH
<a href="<%=request.getAttribute("urlPrefix")%>/content/edit">Add Content</a>
运行时错误是:
org.apache.jasper.JasperException: /base.jsp(9,25) PWC6213: quote symbol expected
我正在传递此值的属性。我传递值时为什么会出现此错误?
答案 0 :(得分:1)
不要在JSP中使用scriptlet。使用JSP EL:
<a href="${urlPrefix}/content/edit">Add Content</a>
答案 1 :(得分:0)
<a href="<%=request.getAttribute('urlPrefix')%>/content/edit">Add Content</a>
使用urlPrefix
的单引号。它应该工作。
答案 2 :(得分:0)
试试这个:
<% String urlPrefix = (String)request.getAttribute("urlPrefix"); %>
<a href="<%=urlPrefix%>/content/edit">Add Content</a>
或更好:
<%
String urlPrefix = (String)request.getAttribute("urlPrefix");
String url = urlPrefix + "/content/edit";
%>
<a href="<%=url%>">Add Content</a>
甚至更好地使用EL:
<a href="${urlPrefix}/content/edit">Add Content</a>
值得一提的是XSS attacks对Asaph的保护作为{{3}}在他的评论中指出:
<a href="${fn:escapeXml(urlPrefix)}/content/edit">Add Content</a>
如果包含,可能会成功
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
位于JSP的顶部。
答案 3 :(得分:0)
我刚刚完成了一个简单的测试,并且以下行没有语法错误,并且无论是否设置urlPrefix
属性都会运行而不会抛出异常:
<a href="<%=request.getAttribute("urlPrefix")%>/content/edit">Add Content</a>
根本没有语法错误。如果没有设置urlPrefix
属性,则生成的html为:
<a href="null/content/edit">Add Content</a>
如果urlPrefix
等于http://example.com
,则生成的html为:
<a href="http://example.com/content/edit">Add Content</a>
这是一个快速的小型独立test.jsp
文件,用于演示:
<% request.setAttribute("urlPrefix", "http://example.com"); %>
<a href="<%=request.getAttribute("urlPrefix")%>/content/edit">Add Content</a>
您可以删除第一行以测试null
案例。
因此,我们已经证明您发布的指定违规行的行实际上并不存在问题。一些可能性: