Changes between Version 1 and Version 2 of OtherTopics


Ignore:
Timestamp:
02/27/26 02:13:43 (3 weeks ago)
Author:
221181
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OtherTopics

    v1 v2  
    33== Безбедност ==
    44
     5=== Спречување на SQL Injection ===
     6
     7Користиме Entity Framework Core (ORM). EF Core автоматски ги параметризира сите LINQ прашања (queries). Ова спречува напаѓачите да вметнат злонамерни SQL команди преку полињата за внес.
     8
     9* EF Core го третира **username** како параметар (@p0), а не како извршлив код.
     10* Ова спречува SQL Injection напади (на пр., ' OR 1=1 --).
     11
     12{{{
     13public async Task<User> AuthenticateAsync(string username, string password)
     14{
     15    var user = await _context.Users
     16        .FirstOrDefaultAsync(u => u.Username == username && u.IsActive);
     17
     18    if (user == null)
     19        return null;
     20
     21    bool isHashed = user.Password.StartsWith("$2") && user.Password.Length == 60;
     22
     23    if (isHashed)
     24    {
     25        if (BCrypt.Net.BCrypt.Verify(password, user.Password))
     26            return user;
     27    }
     28    else
     29    {
     30        if (user.Password == password)
     31        {
     32            user.Password = BCrypt.Net.BCrypt.HashPassword(password);
     33            await _context.SaveChangesAsync();
     34
     35            return user;
     36        }
     37    }
     38
     39    return null;
     40}       
     41}}}
    542
    643== Пеформанси - Индекси ==