1

ASP(VBScript)中输入处理的最佳方式(或至少是最常见的方式)是什么?我主要关心的是 HTML/JavaScript 注入和 SQL 注入。是否有一些等效于 PHPhtmlspecialcharsaddslashes等的?还是我必须使用字符串替换函数之类的手动操作?

4

2 回答 2

5

底线是这个:

  1. 在将用户输入写入页面之前,始终对用户输入进行 HTML 编码。Server.HTMLEncode()为你做。
  2. 始终使用参数化查询与数据库交互。ÀDODB.CommandADODB.CommandParameter对象在这里是正确的选择。
  3. 始终在呈现页面的 IIS 服务器上使用 URLScan 实用程序和 IIS 锁定,除非它们是版本 6 及更高版本,不再需要这些工具。

如果你一味地坚持第 1 点和第 2 点我想不出有多少会出错。

大多数漏洞来自未正确编码用户输入或从中构建 SQL 字符串。如果您出于某种原因遇到了 HTML 编码的用户输入阻碍了您的工作,那么您已经在您的应用程序中发现了一个设计缺陷。

于 2008-11-11T07:41:17.623 回答
2

我将在 Tomalaks 列表中添加另一点。

避免在 SQL 代码中使用字段值的串联。也就是说,在某些情况下,存储过程可能会在字符串中构建一些 SQL 以随后执行。这很好,除非文本字段值用作其构造的一部分。

命令参数可以保护设计用于输入值的 SQL 代码不被劫持以执行不需要的 SQL,但它允许这些不需要的 SQL 成为数据库中的数据。这是一级脆弱性。如果该字段的值随后用于存储过程中的某些 SQL 字符串连接,则存在二级注入漏洞。

另一个考虑是这只是最低限度的保护。它所做的只是使攻击尝试变得无害。然而,在许多情况下,最好添加一个系统来防止此类数据输入和/或改变管理员以进行潜在的注入攻击。

This is where input validation becomes important. I don't know of any tools that do this for you but a few simple Regular Expressions might help. For example, "<\w+" would detect the attempt to include a HTML tag in the field.

于 2008-11-11T10:40:31.927 回答