Rîskên Bêdeng di Serialîzasyona JSON a Nivîsara Sîstema Xwerû de
Pirtûkxaneya System.Text.Json ji bo piraniya sepanên nûjen ên .NET bûye pirtûkxaneya xwerû. Ew bikêrhatî, sivik e, û bi kûrahî bi ASP.NET Core ve hatiye entegrekirin. Lê heman mîhengên xwerû yên ku wê hêsan dikin, xetereyên ewlehiyê yên bêdeng jî tînin holê. Bi xwerû, rêzkirina System.Text.Json hemî taybetmendiyên giştî bixweber rêz dike, hetta yên ku daneyên hesas ên wekî nîşanekan an nasnameyên navxweyî digirin jî. Pêşdebir pir caran ji bo leza xwe dispêrin van xwerûyan, ji nedîtî ve tên ku ew dikarin agahdariya nepenî di bersivên API-yê de eşkere bikin (jsonserializer).
⚠️Nimûneyek ne ewle, tenê ji bo armancên perwerdehiyê. Di hilberînê de bikar neynin.
public class UserProfile { public string UserName { get; set; } public string Email { get; set; } public string SessionToken { get; set; } // Sensitive field } var json = JsonSerializer.Serialize(userProfile); Console.WriteLine(json); // Output: {"UserName":"alex","Email":"alex@example.com","SessionToken":"eyJhbGciOi..."} Ev tevgera jsonserializer eşkere dike SessionToken ji ber ku hemî taybetmendiyên giştî bixweber têne rêzkirin.
Versiyona ewle:
public class UserProfile { public string UserName { get; set; } public string Email { get; set; } [JsonIgnore] // Prevent serialization of sensitive fields public string SessionToken { get; set; } } Nîşeyek Perwerdehiyê: Her dem bikar bînin [JsonIgnore] ji bo taybetmendiyên hesas an jî DTO-yên cuda sêwirînin ku tenê zeviyên ku ji bo rêzefîlmkirinê hatine amadekirin dihewînin.
Çawa JsonSerializer Bêyî Hişyariyê Berfirehkirina Rûberê Dike
JsonSerializer di System.Text.Json de li ser asta rûyê ranaweste. Ew bi awayekî dubare di nav tiştên hêlînkirî, koleksiyon û nirxên enum de digere, û her tiştê ku dikare bigihîje wê rêz dike. Bêyî îstîsnayek eşkere, ev dikare bi hêsanî bibe sedema rijandina daneyên nested, nemaze dema ku tiştên navxweyî nîşanekan, nasnamekaran, an mifteyên danişînê dihewînin.
⚠️Nimûneyek ne ewle, tenê ji bo armancên perwerdehiyê. Di hilberînê de bikar neynin.
public class AuthData { public string AccessToken { get; set; } // Sensitive } public class ApiResponse { public string Message { get; set; } public AuthData AuthInfo { get; set; } // Nested object } var json = JsonSerializer.Serialize(new ApiResponse { Message = "OK", AuthInfo = new AuthData { AccessToken = "abc123" } }); Console.WriteLine(json); // Output: {"Message":"OK","AuthInfo":{"AccessToken":"abc123"}} Objeya navkirî dihêle ku rêzenivîsa json a nivîsa pergalê hesas jî di nav xwe de bigire Nîşana Gihîştinê otomatîk
Versiyona ewle:
public class AuthData { [JsonIgnore] // Prevent exposure of sensitive tokens public string AccessToken { get; set; } } public class ApiResponse { public string Message { get; set; } public AuthData AuthInfo { get; set; } } var options = new JsonSerializerOptions { DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingDefault, WriteIndented = false }; var json = JsonSerializer.Serialize(apiResponse, options); Nîşeyek Perwerdehiyê: Herdem pênase bike Vebijêrkên JsonSerializer bi eşkereyî û celebên nested ji bo eşkerekirina daneyên nexwestî binirxînin.
Bandora Cîhana Rastîn li ser API û Mîkroxizmetan
Di sepanên .NET ên cîhana rastîn de, ev xetereyên rêzikirinê pir caran heta piştî bicihkirinê nayên dîtin. Têkeliya otomasyon, ji nû ve bikaranîna DTO, û tevgera jsonserializer a xwerû xetereyê zêde dike. Şablonên hevpar ên ku rêzefîlmkirina ne ewle daneyan derdixe:
- Ji nû ve bikaranîna hebûnên EF Core rasterast di bersivên API de.
Tomarkirina tiştên rêzefîlmî yên ku daneyên pejirandinê dihewînin. - Parvekirina modelan di navbera xizmetên navxweyî û giştî de di CI/CD pipelines.
⚠️Nimûneyek ne ewle, tenê ji bo armancên perwerdehiyê. Di hilberînê de bikar neynin.
// Logs the full object, including sensitive fields _logger.LogInformation("Response: {data}", JsonSerializer.Serialize(result)); Ger ku netîce hene PasswordHash or SessionToken, ev niha li vir hatine hilanîn CI/CD têketin, binpêkirin prensîbên herî kêm-îmtiyaz. Tu carî nîşanekan, bawernameyan, an URL-yên navxweyî yên rastîn eşkere nekin. pipelines.
Versiyona ewle:
var options = new JsonSerializerOptions { IgnoreReadOnlyProperties = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }; // Sanitize before serialization result.SessionToken = null; _logger.LogInformation("Response: {data}", JsonSerializer.Serialize(result, options)); Nîşeyek Perwerdehiyê: Berî têketinê zeviyên hesas dezenfekte bikin an betal bikin, û her gav deverên ewle bikar bînin. Vebijêrkên JsonSerializer mîhengên xwerû ji bo derana denetimê.
Rêbazên Serîalîzekirina Ewle ji bo Pêşdebiran
Pêşdebir divê mîhengên xwerû yên system.text.json wekî tebeqeyek rehetiyê bihesibînin, ne wekî polîtîkayek ewlehiyê. Serîalîzasyona JSON ya nivîsa pergalê ya ewle tê wateya kontrolkirina tiştê ku ji sepana we derdikeve.
Parastinên Pratîkî
- Peymanên eşkere diyar bikin: DTO-yên taybet ji bo bersivên API-ê biafirînin, qet rasterast EF an jî hebûnên domainê rêzimanî nekin.
- Vebijarkên gerdûnî mîheng bike: Bikaranîn JsonSerializerOptions.DefaultIgnoreCondition û Siyaseta Navkirina Taybetmendiyê.
- Bikaranîn [JsonIgnore] an jî veguherîner: Daneyên hesas veşêre an veguherîne.
- Derana piştrast bike: Bersivên rastîn ên rêzefîlmî di ceribandinan de kontrol bikin.
- Kontrolên otomatîk: Tesdîqkirina rêzimanîkirinê tê de bike CI/CD.
Lîsteya Kontrolê ya Pêşîlêgirtinê ya Biçûk
- Hemû polan bi karanîna rêzikirina System.Text.Json binirxînin
- Nehênî an jî bawernameyan bi nîşan bike [JsonIgnore]
- Pîvanên xwerû yên ewle yên gerdûnî di Program.cs or Startup.cs
- Ji rêzikirina rasterast di tomarên tomarê de dûr bisekinin
- Testên rûbirûbûna rêzefîlmkirinê di nav xwe de bihewîne CI/CD pipeline
Nîşeyek Perwerdehiyê: Serîalîzasyona ewle li ser sînordarkirina eşkerekirinê ye, ne li ser zêdekirina tevliheviyê. Serîalîzasyonê eşkere û ceribandinbar bikin.
Tesbîtkirina Serîalîzasyona Neewle bi Skenkirina Otomatîk - System.Text.Json
Skenkirina otomatîk di CI/CD dibe alîkar ku karanîna xeternak a System.Text.Json û JsonSerializer were tespîtkirin. Amûrên analîza statîk dikarin van tespît bikin:
- Modelên wenda ne [JsonIgnore].
- Zeviyên hesas ên ku di DTOyan de têne eşkerekirin.
- Xwerûyên gerdûnî yên ne ewle (mînak, nebûna şert û mercên paşguhkirinê).
Mînak Pipeline Berçavkirinî
# Never expose real tokens, credentials, or internal URLs in pipelines - name: Run serialization security checks run: dotnet xygeni validate --rules serialization --fail-on-risk Nîşeyek Perwerdehiyê: Yekbûn kontrolên statîk nav xwe CI/CD kontrola domdar li ser rêzikirina JSON ya nivîsa pergalê li seranserê hemî avahiyan misoger dike.
Çawa Xygeni Code Security Ewlekariya Serialîzasyona .NET xurt dike
Xygeni Code Security tespîtkirina kûr ji bo mîhengên xwerû yên System.Text.Json ên ne ewle û karanîna xelet a JsonSerializer di NET de peyda dike.
Ew modelên wekî: destnîşan dike:
- Zeviyên hesas bi xwerû têne rêzkirin.
- Tomarkirina neewle ya daneyên JSON.
- Wenda [JsonIgnore] taybetmendiyên.
- Vebijarkên rêzenivîskirina JSON a nivîsa sîstemê şaş hatine mîhengkirin.
Bi entegrasyonê Xygeni li pre-commit hooks, CI/CD pipelines, an jî dergehên PR, hûn dikarin şablonên rêzefîlmkirinê yên qels asteng bikin berî ku ew bibin yek. Ew pêvajoya DevSecOps ya we ya heyî temam dike bi veguherandina mîhengên xelet ên rêzefîlmkirinê bo polîtîkayên ewlehiyê yên bicîhkirî.
Têbînîyeke perwerdeyî: Amûrên ewlehiyê yên mîna Xygeni paqijiya rêzefîlmkirinê bixweber bicîh tînin, azadkirina pêşdebiran da ku balê bikişînin ser kodê, ne li ser denetiman.
Encam - Derbarê System.Text.Json
System.Text.Json rêzefîlmkirinê bilez dike, lê rehetî pir caran eşkerebûnê vedişêre. Rêzefîlmkirina xwerû ya system.text.json her milkê giştî dihewîne, ku dibe ku daneyên navxweyî, nîşanekan, an nasnameyan derxîne.
Pêşdebir divê:
- Modelên wan defin bikin.
- Bikaranîn [JsonIgnore] û ewle Vebijêrkên JsonSerializer.
- Ji rêzealîzekirina tiştên navxweyî dûr bisekinin.
- Skenkirinê bi karanîna amûrên wekî otomatîk bikin Xygeni Code Security.
Rêzkirina xwerû ne tenê kurtebirrek ji bo pêşdebiran e; ew potansiyelek derketina daneyan e. Rêzkirinê eşkere bikin, derketinê verast bikin, û kontrolên otomatîk bikin, ji ber ku xwerûyên ewle ne her gav ewle ne.






