【发布时间】:2021-11-04 12:59:32
【问题描述】:
我必须更新工作中的旧项目。虽然我熟悉 php 脚本,但我没有任何经典 asp 的经验。
- 有什么我应该使用的功能吗?
- 能否为我提供一些基本保护的好功能?
- 在 asp 中有没有类似参数化查询的东西?
谢谢!
【问题讨论】:
-
“清理”是思考问题的错误方式。
标签: security asp-classic sanitization
我必须更新工作中的旧项目。虽然我熟悉 php 脚本,但我没有任何经典 asp 的经验。
谢谢!
【问题讨论】:
标签: security asp-classic sanitization
是的,您可以在经典 ASP(更准确地说,经典 ADO)中使用参数化查询。
这是link。
至于编码输出,我可能想为最新的 Microsoft Anti-XSS 库创建一个包装器,并使用 Server.CreateObject 调用它。由于我在 .Net 中花费的时间更多,因此我远不是这类事情的专家,所以我认为这会起作用。
Server.HTMLEncode 确实不够好,因为它只将一些编码字符列入黑名单。 Anti-XSS 库要好得多,因为它将可接受的内容列入白名单。
【讨论】:
始终使用 Server.HTMLEncode 清理用户输入。
例如,如果您从表单文本框中设置变量:
firstName = Server.HTMLEncode(trim(request.form("firstname")))
【讨论】:
注意 SQL 注入。不要将用户输入连接到 SQL 字符串然后执行它。相反,始终使用参数化查询。
【讨论】:
有很多以 Is 开头的函数,例如 IsNumber、IsArray 等等,可能会很有趣。此外,如果您需要一个整数,您可以使用CLng(Request("blabla")) 来获取它,因此如果它不是整数,CLng 函数将引发错误。
【讨论】:
一种方法可能是在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
%>
【讨论】: