经典ASP跨站点脚本

时间:2015-05-22 10:02:32

标签: security asp-classic xss cross-site

我是网络开发的新手,现在我也需要处理经典的ASP项目。主要议程是删除旧代码的安全问题,而不是开发新的东西。

最初,我有很多SQL注入问题。我成功地使用参数查询删除SQL注入。但是,一旦相同的代码显示跨站点脚本:持久性问题。然后,我使用了Server.HTMLEncode("")。即使它成功地解决了这个问题。但是,现在它显示为跨站点脚本:差的验证问题

跨站点脚本:持久性

<TD> <% =rs("hse_desc")%> </TD>

跨站点脚本:验证不良

<TD> <% =(Server.HTMLEncode(rs("hse_desc")))%> </TD>

有谁可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

这只是说你的编码器很弱:

http://www.hpenterprisesecurity.com/vulncat/en/vulncat/java/cross_site_scripting_poor_validation.html

您使用的是什么静态代码分析器?

*请从Classic ASP开始尖叫。真的没有办法保证它。 IMHO

答案 1 :(得分:0)

您是否直接使用&lt;%= rs(“hse_desc”)%&gt;在你的代码中。 如果这些数据直接与跨站点一起发送,则它是一个漏洞,任何人都可以在此代码中注入数据。

您必须将此数据设置为新变量并使用类似

的函数对其进行保护
function clearme(value)
 if value = "" then exit function
 value = replace(value,"'","")
 value = replace(value,"`","")
 value = replace(value,"%","")
 value = replace(value,"<","&lt;")
 clearme= value
end function

if len(rs("hse_desc")) > 1 then
  mydata = clearme(rs("hse_desc"))
else
  mydata = ""
end if

现在datam是一个明确的值,可以在代码中的任何地方使用

答案 2 :(得分:0)

我认为这可能是误报。你的代码

<TD> <% =(Server.HTMLEncode(rs("hse_desc")))%> </TD>

将解决任何XSS问题(只要你只为HTML输出而不是JavaScript)。

我认为你的静态分析仪可能会发现这是一个无法保证的弱结构。尝试删除多余的括号:

<TD> <%=Server.HTMLEncode(rs("hse_desc"))%> </TD>

&#34;差评验&#34;问题是指无法正确HTML编码的输出代码。某些语言和框架不支持正确的编码。所以咨询意见是说在这些情况下你应该验证输入,而不是输出编码。例如,如果用户输入的是电话号码,则应确保电话号码仅使用列入白名单的字符(例如说09-#()),并确保这些是输入来自其他地方时输出的唯一字符。

但是,在你的情况下,我认为这不适用。