gpt4 book ai didi

c# - 获取密码时进行字符串比较

转载 作者:行者123 更新时间:2023-12-02 04:38:35 24 4
gpt4 key购买 nike

我要问一个非常基本的问题,但由于我遇到了这个问题,所以我不明白为什么会这样。通常当我们比较像 s1==s2 这样的两个字符串时,它会与长度、字符、大小写等进行比较,但是在 linq 中使用以下查询时,它与字符串的大小写不匹配。我的数据库有 Password123,但是当我输入 password123 时,它也会返回一条实际上是错误的记录。我的查询是: var row = DB.tbllogin.Where(m => m.Id == LoginId && m.Password == pwd.Trim()).FirstOrDefault();

不符合大小写,DB中字段为nvarchar类型,pwd为string类型我正在使用 Entity Framework ORM。

最佳答案

问题是比较是在 SQL 中执行的 - 我怀疑如果你在 SQL Studio 中执行相同的查询,你会得到相同的结果。

一个修复方法是将数据库排序规则更改为区分大小写;不清楚您是否可以直接在 LINQ 中执行此操作。 (这是细节通过抽象泄漏的情况之一。)

但是,对于这种特定情况,更好的解决方案是不要以明文形式存储您的密码。这是非常不安全的。您应该使用类似 bcrypt 的方式存储散列。参见 Jeff Atwood's blog post on the topic了解更多详情。

关于c# - 获取密码时进行字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21374641/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com