在经典asp中消毒输入的好方法

时间:2009-01-14 18:43:45

标签: security asp-classic sanitization

我必须在工作中更新旧项目。虽然我熟悉php脚本,但我对经典asp没有任何经验。

  • 我应该使用哪些功能?
  • 你能为我提供一些基本保护的好功能吗?
  • 在asp?
  • 中是否存在类似参数化查询的内容

谢谢!

6 个答案:

答案 0 :(得分:9)

是的,您可以在经典ASP中使用参数化查询(更准确地说,是经典的ADO)。

这是link

至于编码输出,我可能想要为最新的Microsoft Anti-XSS库创建一个包装器,并使用Server.CreateObject调用它。我在这类事情上远非专家,因为我在.Net上花了更多的时间,所以我只觉得这会有效。

Server.HTMLEncode真的不够好,因为它只会将一些编码字符列入黑名单。 Anti-XSS库更好,因为它将可接受的内容列入白名单。

答案 1 :(得分:7)

始终使用Server.HTMLEncode来清理用户输入。

例如,如果您要从表单文本框设置变量:

firstName = Server.HTMLEncode(trim(request.form(“firstname”)))

答案 2 :(得分:2)

注意SQL注入。不要将用户输入连接到SQL字符串,然后执行它。相反,始终使用参数化查询。

答案 3 :(得分:1)

有许多以Is开头的函数,例如IsNumberIsArray等,可能会引起人们的兴趣。此外,如果您期望一个整数,您可以使用CLng(Request("blabla"))来获取它,因此如果它不是整数,则CLng函数将引发错误。

答案 4 :(得分:1)

执行此操作的一种方法可能是在header.asp文件中添加一个检查,该文件遍历Request对象以查找不适当的字符。例如:

<%
    for each x in Request.Form ' Do this for Request.Querystring also
        If InStr(x,"<") <> 0 Then
            ' encode the value or redirect to error page?
        End If
    next
%>

答案 5 :(得分:0)

只需创建一个函数,即可在每次要输出字符串时调用。它将对html进行编码并将其输出为文本。例如。转义html。

FUNCTION esc(a)
esc= Server.HTMLEncode(a)
END FUNCTION

variable = esc("<img src="https://i.imgur.com/eatOKWw.png">");

Response.Write variable

输出:<img src="https://i.imgur.com/eatOKWw.png">