代码之家  ›  专栏  ›  技术社区  ›  user186445

如何解析用户输入?

  •  0
  • user186445  · 技术社区  · 16 年前

    http://www.yourdomain.com/Default.aspx?p=2

    现在我们当然要检查querystring参数p是否包含错误。 我现在有以下设置:

    1) 检查p是否存在

    3) htmlencode p的值

    5) 检查数据库中是否存在p的整数

    亲切问候,, 做记号

    5 回复  |  直到 13 年前
        1
  •  0
  •   Vilx-    16 年前

    很简单。对于大多数数据类型(整数、小数、双精度、日期和布尔值),都有一个非常严格的格式。如果该值未按严格格式解析,则为错误。

    串 有严格的格式,如电子邮件地址或电话号码。这些可以通过简单的regexp进行验证。如果符合,就使用它,否则就是错误。

    然而,在大多数情况下,字符串只需保存到数据库中,然后再次显示。在这种情况下,除了在插入DB时转义(如果使用参数化查询也不需要转义)k和在呈现到显示时进行HTML编码外,不需要任何处理。

    字符串的松散格式的罕见例外是,嗯。。。稀有的我现在想不出什么。为此,您可以负担一些更广泛的解析和处理。

    补充:

    有时候你根本不需要使用这个值,那么你可以忽略它。

        2
  •  3
  •   Jeremy McGee    16 年前

    我的观点:通常这种查询字符串参数并不是用户真正“输入”的,而是作为链接提交的。因此,过于复杂的缓慢验证并不是真正必要的。

    因此,我只需将其传递到持久性/数据层,并根据我使用的系统类型,处理作为常规404未找到或500内部服务器错误返回的任何错误。

        3
  •  3
  •   Joseph    16 年前

        4
  •  1
  •   Ray    16 年前

    如果要将输入转换为整数,则不需要步骤2和3,只需使用 int.TryParse

        5
  •  1
  •   Rubens Farias    16 年前

    那么:

    int p = 0;
    if(!Int32.TryParse(Request.QueryString["p"], out p))
        throw new ArgumentOutOfRangeException("p");