Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有效的身份验证,即使密码为;“不正确”;ASP.NET/TSQL_C#_Asp.net_Database_Tsql - Fatal编程技术网

C# 有效的身份验证,即使密码为;“不正确”;ASP.NET/TSQL

C# 有效的身份验证,即使密码为;“不正确”;ASP.NET/TSQL,c#,asp.net,database,tsql,C#,Asp.net,Database,Tsql,我已经创建了一个自定义的身份验证方法,它基本上接受用户的两个输入,检查数据库中是否有这样一个组合的记录,若有,那个么用户的身份验证是正确的。它很简单,工作正常。唯一的问题是,如果我的密码是“hash1”,那么“hash1”、“hash1”hash1等也是有效的 我的系统只是忽略尾随空格,它不区分大小写。我自己不更改密码字符串,但当我将其添加为查询参数时 command.Parameters.Add("@pass", SqlDbType.VarChar, -1).Value = password;

我已经创建了一个自定义的身份验证方法,它基本上接受用户的两个输入,检查数据库中是否有这样一个组合的记录,若有,那个么用户的身份验证是正确的。它很简单,工作正常。唯一的问题是,如果我的密码是“hash1”,那么“hash1”、“hash1”hash1等也是有效的

我的系统只是忽略尾随空格,它不区分大小写。我自己不更改密码字符串,但当我将其添加为查询参数时

command.Parameters.Add("@pass", SqlDbType.VarChar, -1).Value = password;
Debuger向我展示了一些可能导致这种行为的默认选项

有没有办法关闭或更改特定参数的这些选项


//可能的重复只是解决方案的一部分。我想知道如何更改这些比较。

可能的重复:您应该在数据库中存储哈希密码,而不是明文。@kblok谢谢。在查询结束时添加COLLATE Latin1\u General\u CS\AS解决了区分大小写的问题,但不包括尾随空格。I g如果这一个将被解决,我将开始使用用户输入的散列。仍然有办法解决这一问题,但关闭那些比较选项?@Bendom或者您可以在发送到服务器之前执行
password.Trim()
database@kblok我在想,但我不想“碰”“密码字符串。用户是否知道它。但这绝对是一个解决办法。非常感谢。