ASP Classic是否使用反射?

时间:2012-12-26 13:52:44

标签: reflection asp-classic xss

我看到一段ASP代码如下所示:

<% rs("Server.HTMLEncode(x)") %>

因为我怀疑记录集有一个名为&#34; Server.HTMLEncode(x)&#34;我想知道他们是否打算写:

<% Server.HTMLEncode(rs(x)) %>

或者,如果经典ASP进行反射并以某种方式将该字符串文字解释为方法调用。

2 个答案:

答案 0 :(得分:1)

我使用经典ASP十年了,我从未遇到过任何反思。根据我过去的经验,我同意你的意见,他们可能会写:

<% Server.HTMLEncode(rs(x)) %>

但是,它仍然看起来不正确。他们是否意味着使用Response.Write写出值?如果没有看到更多代码,我无法分辨。

对我来说看起来很糟糕。

答案 1 :(得分:0)

经典ASP可以用VBScript编写, 允许使用Eval()Execute()方法进行反射。例如:

Class Foo
    Public Bar
End Class

Dim oFoo, propName, myValue
Set oFoo = New Foo
oFoo.Bar = "hello world"
propName = "Bar"
myValue = Eval("oFoo." & propName)
Response.Write("Value of " & propName & ":" & myValue)

但是,您的示例代码情况并非如此。这只是传递给Recordset对象的字符串文字,它寻找完全匹配。如果给定的参数是一个数字,它将返回具有此类索引的字段的值,否则它需要一个精确字段名称的字符串。

假设x是用户输入,应该是字段名称或索引,它们可能意味着:

<%=rs(Server.HTMLEncode(x)) %>