【问题标题】:Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS) (CWE ID 80)网页中与脚本相关的 HTML 标签的不正确中和(基本 XSS)(CWE ID 80)
【发布时间】:2014-11-12 10:06:27
【问题描述】:

我的项目客户希望所有应用程序都符合 Veracode....在将其用于 Veracode Staic Sc​​an 后,发现有 326 个缺陷需要作为跨站点脚本错误的一部分进行修复。

提供 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>


&nbsp;<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 "&nbsp;<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>&nbsp;"

可以应用什么类型的修复来解决这些跨脚本缺陷??

【问题讨论】:

  • 经典 ASP 使用 VBScript,而不是 VB.net。也许您的意思是它使用 ASP.net,(使用 VB.net 或 C#)
  • 我错了..该应用程序是使用 ASP Classic VBSCript 构建的..
  • 对此有何回复?
  • 您应该考虑设置正确的标头以防止 XSS 攻击。 veracode.com/blog/2014/03/…

标签: vbscript asp-classic veracode


【解决方案1】:

查看您的代码,有几个变量可能会产生问题。我不确定 Veracode 如何检查问题,但如果这些变量中的任何一个来自用户提供的值,它们就会构成风险。

首先是基础知识,如果您在任何变量中允许&gt;&lt;,尤其是结合允许"',一切都是线程。他们几乎可以插入任何东西。

在您的情况下,允许 "' 足以产生问题,因为很多变量已经插入到 JavaScript 代码中,例如 onmouseoveronmouseout

此外,feltfarve 总是会导致问题,即使您不允许这些字符。

feltfarve in &lt;td &lt;%=feltfarve%&gt; nowrap&gt; 位于没有 qoutes 或任何内容的标签内。如果有人可以将值修改为onmouseover=doBadStuff(),那你就有麻烦了。如果他们将其与样式结合起来,他们甚至可以使其全屏显示,因此几乎任何人都会将其悬停。

请记住,如果您直接从数据库中插入值,我认为 %=rsDBox("filid")%&gt; 在做什么,那么您必须100% 确定在插入时正确检查它们。

由于DB 的最佳做法是插入数据as provided(未编码),因此在将这些值放入HTML 之前,您应该始终检查这些值。

【讨论】:

    【解决方案2】:

    我认为我们应该使用 Server.HTMLEncode 来修复 XSS(跨站脚本)威胁。

    【讨论】:

    • 这只修复了最愚蠢的 XSS 问题,例如 alert('&lt;%=Request.Querystring("badvalue")%&gt;')
    猜你喜欢
    • 1970-01-01
    • 2020-03-24
    • 2014-09-30
    • 2014-05-13
    • 2014-03-21
    • 2017-12-17
    • 2014-10-23
    • 2018-11-24
    • 2019-05-05
    相关资源
    最近更新 更多