8

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

  • 有什么我应该使用的功能吗?
  • 能给我提供一些基本保护的好功能吗?
  • asp中是否有类似参数化查询的东西?

谢谢!

4

5 回答 5

9

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

这是一个链接

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

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

于 2009-01-14T20:34:32.947 回答
7

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

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

firstName = Server.HTMLEncode(trim(request.form("firstname")))

于 2009-01-14T18:53:13.980 回答
2

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

于 2009-01-14T19:14:57.930 回答
1

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

于 2009-01-14T19:21:27.883 回答
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
%>
于 2009-01-14T19:35:46.373 回答