我必须更新工作中的旧项目。尽管我熟悉 php 脚本,但我对经典的 asp 没有任何经验。
- 有什么我应该使用的功能吗?
- 能给我提供一些基本保护的好功能吗?
- asp中是否有类似参数化查询的东西?
谢谢!
我必须更新工作中的旧项目。尽管我熟悉 php 脚本,但我对经典的 asp 没有任何经验。
谢谢!
是的,您可以在经典 ASP(更准确地说,经典 ADO)中使用参数化查询。
这是一个链接。
至于编码输出,我可能很想为最新的 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
%>