【问题标题】:Required Validations for Special Characters特殊字符所需的验证
【发布时间】:2011-08-26 06:52:32
【问题描述】:

我们的 ASP.NET 应用程序中有一个用户创建功能。这将在数​​据库中为新用户创建一个条目,并在 Active Directory 中创建一个新帐户。可以使用应用程序中的其他功能搜索所有现有用户。

目前只允许输入英文字母和数字来创建用户。但是,客户也想输入特殊字符。当我们尝试时,我们发现了以下两个问题。

1) 当一个用户只用特殊字符创建时,它会抛出错误

2) 输入 % 搜索时(只查看名称中带有@的用户),返回所有用户。

您能否列出其他可能的问题,以便我们可以形成所需的验证(如 % 不应该被允许)。

注意:“英文字母和数字”以外的任何内容都被视为特殊字符。

DECLARE @CharacterVal VARCHAR(10)
SET @CharacterVal = '%'

SELECT * FROM USerDetails WHERE First_Name LIKE @CharacterVal

谢谢

李乔

【问题讨论】:

    标签: c# asp.net sql regex active-directory


    【解决方案1】:

    就 Active-Directory 而言,this Microsoft article 描述了登录名中不允许的字符是:

    " / \ [ ] : ; | = , + * ?

    【讨论】:

      【解决方案2】:

      如果您认真对待安全问题,请不要通过黑名单执行此操作。获取客户想要的字符列表,然后仅将这些字符列入白名单。

      【讨论】:

      • 如果您可以提供安全允许的特殊字符,我们可以向客户建议。
      • 从客户那里得到一份清单,全部试一试,报告不被允许的。
      • 定义“安全”。为什么 % 不安全?
      • "%" 不安全,如果用 "%" 搜索会返回所有结果
      【解决方案3】:

      (1) 特殊字符是一个更广泛的问题 - 您可能需要转换输入: http://support.microsoft.com/kb/232580

      (2) 在sql server中使用escape子句可以允许所有字符: 从表 WHERE 中选择列 列 LIKE '%\@%' ESCAPE '\'

      【讨论】:

        猜你喜欢
        • 2013-05-16
        • 2011-03-09
        • 2012-05-14
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 2021-10-12
        • 2011-07-19
        • 1970-01-01
        相关资源
        最近更新 更多