My Project Client希望所有应用程序都符合Veracode标准....在为Veracode Staic Scan提供后,发现有32个缺陷需要修复,作为Cross Site Scripting Error的一部分。
给出Scan的应用程序基本上是使用 ASP Classic(VBScript)构建的。
报告的一些行是:
<td <%=feltfarve%> nowrap><%=tabeltekst_start%><a href="#" onclick="checkbrowser('<%=rsDBox("filid")%>','');" onmouseover=" window.status=' <%= f(18) & " " & rsDBox("filnavn")%>'; return true" onmouseout="window.status=''; return true");"><%=rsDBox("filnavn")%></a><%=tabeltekst_slut%></td>
<a onmouseover="EnterContent('ToolTip','<%=f(33)%>','<% if sagerRS("dkrerefnr") <> "" then Response.Write (replace(f(34),"%1", sagerRS("dkrerefnr"))) else Response.Write(replace(f(34),"%1", f(35))) end if%>'); Activate();" onmouseout="deActivate()" href="javascript:void(0)"><img src="/secure/images/rolloverknap/gray_e.gif" border="0" WIDTH="12" HEIGHT="12"></a>
Response.Write " <a onmouseover=""EnterContent('ToolTip','"& f(36) &"','" & kretxt & "'); Activate();"" onmouseout=""deActivate()"" href=""javascript:void(0)""><img src=""/secure/images/rolloverknap/gray_i.gif"" border=""0"" WIDTH=""12"" HEIGHT=""12""></a> "
可以应用哪种类型的修复来解决这些Cross Scripting Flaws?
答案 0 :(得分:1)
查看代码时,有几个变量可能会产生问题。我不确定Veracode如何检查问题,但如果这些变量中的任何一个来自用户提供的值,则会带来风险。
首先是基础知识,如果您在任何变量中允许>
和<
,特别是与允许"
和'
相结合,则所有内容都是一个主题。他们几乎可以插入任何东西。
在你的情况下允许"
和'
足以产生问题,因为很多变量已经插入Javascript代码中,如onmouseover
和onmouseout
此外,feltfarve
总是会导致问题,即使您不允许这些字符。
feltfarve
中的{p> <td <%=feltfarve%> nowrap>
位于没有qoutes或任何内容的标记内。如果有人可以将值修改为onmouseover=doBadStuff()
您的麻烦。如果他们将它与风格结合起来甚至可以全屏显示,那么几乎任何人都会将其悬停。
请注意,如果您直接从数据库中插入值,我认为%=rsDBox("filid")%>
正在执行的操作,那么您必须 100%确定,以便在插入时正确检查它们。< / p>
由于DB
最佳做法是插入数据as provided
(未编码),因此在将这些值放入HTML
之前,应始终先检查这些值。
答案 1 :(得分:-1)
我认为我们应该使用Server.HTMLEncode来修复XSS(跨站点脚本)威胁。