特殊字符的必需验证

时间:2011-08-26 06:52:32

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

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

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

1)当用户只创建了特殊字符时,就会抛出错误

2)通过输入%进行搜索(仅查看名称中包含@的用户),将返回所有用户。

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

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

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

SELECT * FROM USerDetails WHERE First_Name LIKE @CharacterVal

由于

Lijo

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

“/ \ [] :; | =,+ *?<>