system.text.json - jsonserializer - સિસ્ટમ ટેક્સ્ટ json સીરીયલાઇઝેશન

.NET માં System.Text.Json ડિફોલ્ટ: જ્યારે સુવિધા ડેટા એક્સપોઝર ખોલે છે

સામગ્રીનું કોષ્ટક

અવશ્ય વાંચવા જેવી પોસ્ટ્સ

રસપ્રદ નવીનતમ પોસ્ટ્સ

ડિફોલ્ટ સિસ્ટમ ટેક્સ્ટ JSON સીરીયલાઇઝેશનમાં સાયલન્ટ રિસ્ક

System.Text.Json લાઇબ્રેરી મોટાભાગની આધુનિક .NET એપ્લિકેશનો માટે ડિફોલ્ટ બની ગઈ છે. તે કાર્યક્ષમ, હલકું અને ASP.NET કોરમાં ઊંડાણપૂર્વક સંકલિત છે. પરંતુ તે જ ડિફોલ્ટ્સ જે તેને સરળ બનાવે છે તે શાંત સુરક્ષા જોખમો પણ રજૂ કરે છે. ડિફૉલ્ટ રૂપે, System.Text.Json સીરીયલાઇઝેશન આપમેળે બધી જાહેર મિલકતોને સીરીયલાઇઝ કરે છે, ટોકન્સ અથવા આંતરિક ઓળખકર્તાઓ જેવા સંવેદનશીલ ડેટા ધરાવતા ગુણધર્મો પણ. ડેવલપર્સ ઘણીવાર ઝડપ માટે આ ડિફોલ્ટ્સ પર આધાર રાખે છે, તે અવગણીને કે તેઓ API પ્રતિભાવો (jsonserializer) માં ગોપનીય માહિતીનો ખુલાસો કરી શકે છે. 

⚠️અસુરક્ષિત ઉદાહરણ, ફક્ત શૈક્ષણિક હેતુઓ માટે. ઉત્પાદનમાં ઉપયોગ કરશો નહીં.

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..."} 

આ jsonserializer વર્તણૂક દર્શાવે છે કે સેશનટોકન કારણ કે બધી જાહેર મિલકતો આપમેળે શ્રેણીબદ્ધ થાય છે.

સુરક્ષિત સંસ્કરણ:

public class UserProfile {     public string UserName { get; set; }     public string Email { get; set; }       [JsonIgnore] // Prevent serialization of sensitive fields     public string SessionToken { get; set; } } 

શૈક્ષણિક નોંધ: હંમેશા ઉપયોગ કરો [જેસનઇગ્નોર] સંવેદનશીલ ગુણધર્મો માટે અથવા અલગ DTO ડિઝાઇન કરો જેમાં ફક્ત શ્રેણીબદ્ધ કરવા માટે બનાવાયેલ ક્ષેત્રો હોય.

JsonSerializer ચેતવણી વિના એક્સપોઝરને કેવી રીતે વિસ્તૃત કરે છે

System.Text.Json માં JsonSerializer સપાટીના સ્તર સુધી મર્યાદિત નથી. તે પુનરાવર્તિત રીતે નેસ્ટેડ ઑબ્જેક્ટ્સ, સંગ્રહો અને enum મૂલ્યો દ્વારા ચાલે છે, તે ઍક્સેસ કરી શકે તેવી દરેક વસ્તુને શ્રેણીબદ્ધ કરે છે. સ્પષ્ટ બાકાત વિના, આ સરળતાથી નેસ્ટેડ ડેટા લીક તરફ દોરી શકે છે, ખાસ કરીને જ્યારે આંતરિક વસ્તુઓમાં ટોકન્સ, ઓળખકર્તાઓ અથવા સત્ર કી હોય છે.

⚠️અસુરક્ષિત ઉદાહરણ, ફક્ત શૈક્ષણિક હેતુઓ માટે. ઉત્પાદનમાં ઉપયોગ કરશો નહીં.

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"}} 

નેસ્ટેડ ઑબ્જેક્ટ સિસ્ટમ ટેક્સ્ટ json સીરીયલાઇઝેશનને સંવેદનશીલ બનાવે છે એક્સેસટોકન આપમેળે

સુરક્ષિત સંસ્કરણ:

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); 

શૈક્ષણિક નોંધ: હંમેશા વ્યાખ્યાયિત કરો JsonSerializerવિકલ્પો સ્પષ્ટપણે અને અનિચ્છનીય ડેટા એક્સપોઝર માટે નેસ્ટેડ પ્રકારોની સમીક્ષા કરો.

API અને માઇક્રોસર્વિસિસમાં વાસ્તવિક-વિશ્વ અસર

વાસ્તવિક દુનિયાના .NET એપ્લિકેશન્સમાં, આ સીરીયલાઇઝેશન જોખમો ઘણીવાર ડિપ્લોયમેન્ટ પછી સુધી ધ્યાન બહાર રહે છે. ઓટોમેશન, DTO પુનઃઉપયોગ અને ડિફોલ્ટ jsonserializer વર્તણૂકનું સંયોજન એક્સપોઝરને વધારે છે. સામાન્ય પેટર્ન જ્યાં અસુરક્ષિત શ્રેણીકરણ ડેટા લીક કરે છે:

  • API પ્રતિભાવોમાં સીધા EF કોર એન્ટિટીનો ફરીથી ઉપયોગ.
    પ્રમાણીકરણ ડેટા ધરાવતા શ્રેણીબદ્ધ ઑબ્જેક્ટ્સને લોગ કરવું.
  • આંતરિક અને જાહેર સેવાઓ વચ્ચે મોડેલ શેર કરવા CI/CD pipelines.

⚠️અસુરક્ષિત ઉદાહરણ, ફક્ત શૈક્ષણિક હેતુઓ માટે. ઉત્પાદનમાં ઉપયોગ કરશો નહીં.

// Logs the full object, including sensitive fields _logger.LogInformation("Response: {data}", JsonSerializer.Serialize(result)); 

જો પરિણામ સમાવે પાસવર્ડહેશ or સેશનટોકન, આ હવે સંગ્રહિત છે CI/CD લોગ, ઉલ્લંઘન ઓછામાં ઓછા વિશેષાધિકારના સિદ્ધાંતો. વાસ્તવિક ટોકન્સ, ઓળખપત્રો અથવા આંતરિક URL ને ક્યારેય ખુલ્લા પાડશો નહીં pipelines.

સુરક્ષિત સંસ્કરણ:

var options = new JsonSerializerOptions {     IgnoreReadOnlyProperties = true,     DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }; // Sanitize before serialization result.SessionToken = null; _logger.LogInformation("Response: {data}", JsonSerializer.Serialize(result, options)); 

શૈક્ષણિક નોંધ: લોગીંગ કરતા પહેલા સંવેદનશીલ ક્ષેત્રોને સેનિટાઇઝ કરો અથવા રદ કરો, અને હંમેશા સલામત ઉપયોગ કરો JsonSerializerવિકલ્પો ઓડિટ આઉટપુટ માટે ડિફોલ્ટ.

વિકાસકર્તાઓ માટે સલામત શ્રેણીકરણ પ્રથાઓ

ડેવલપર્સે system.text.json ડિફોલ્ટ્સને સુરક્ષા નીતિ તરીકે નહીં, પણ સુવિધા સ્તર તરીકે ગણવા જોઈએ. સલામત સિસ્ટમ ટેક્સ્ટ JSON સીરીયલાઇઝેશનનો અર્થ છે કે તમારી એપ્લિકેશનમાંથી શું બહાર આવે છે તેનું નિયંત્રણ લેવું.

વ્યવહારુ સંરક્ષણ

  1. સ્પષ્ટ કરારો વ્યાખ્યાયિત કરો: API પ્રતિભાવો માટે સમર્પિત DTO બનાવો, EF અથવા ડોમેન એન્ટિટીને ક્યારેય સીધા સીરીયલાઇઝ કરશો નહીં.
  2. વૈશ્વિક વિકલ્પો ગોઠવો: વાપરવુ JsonSerializerOptions.DefaultIgnoreCondition અને મિલકતના નામકરણ નીતિ.
  3. લાગુ પડે છે [જેસનઇગ્નોર] અથવા કન્વર્ટર: સંવેદનશીલ ડેટા છુપાવો અથવા રૂપાંતરિત કરો.
  4. આઉટપુટ માન્ય કરો: પરીક્ષણોમાં વાસ્તવિક શ્રેણીબદ્ધ પ્રતિભાવોનું નિરીક્ષણ કરો.
  5. સ્વચાલિત તપાસ: શ્રેણીકરણ માન્યતા શામેલ કરો CI/CD.

મીની પ્રિવેન્ટિવ ચેકલિસ્ટ

  • System.Text.Json સીરીયલાઇઝેશનનો ઉપયોગ કરીને બધા વર્ગોની સમીક્ષા કરો.
  • રહસ્યો અથવા ઓળખપત્રોને ચિહ્નિત કરો [જેસનઇગ્નોર]
  • માં વૈશ્વિક સલામત ડિફોલ્ટ વ્યાખ્યાયિત કરો પ્રોગ્રામ.સી.એસ or સ્ટાર્ટઅપ.સી.એસ.
  • લોગમાં ડાયરેક્ટ સીરીયલાઇઝેશન ટાળો
  • તમારામાં સીરીયલાઇઝેશન એક્સપોઝર ટેસ્ટનો સમાવેશ કરો CI/CD pipeline

શૈક્ષણિક નોંધ: સલામત શ્રેણીકરણ એ એક્સપોઝરને મર્યાદિત કરવા વિશે છે, જટિલતા ઉમેરવા વિશે નહીં. શ્રેણીકરણને સ્પષ્ટ અને પરીક્ષણયોગ્ય બનાવો.

ઓટોમેટેડ સ્કેનિંગ સાથે અસુરક્ષિત સીરીયલાઇઝેશન શોધવું - System.Text.Json

ઓટોમેટેડ સ્કેનિંગ ઇન CI/CD System.Text.Json અને JsonSerializer ના જોખમી ઉપયોગને શોધવામાં મદદ કરે છે. સ્ટેટિક વિશ્લેષણ સાધનો ઓળખી શકે છે:

  • મોડેલો ખૂટે છે [જેસનઇગ્નોર].
  • DTO માં ખુલ્લા સંવેદનશીલ ક્ષેત્રો.
  • અસુરક્ષિત વૈશ્વિક ડિફોલ્ટ્સ (દા.ત., અવગણવાની શરતોનો અભાવ).

ઉદાહરણ Pipeline તપાસ

# Never expose real tokens, credentials, or internal URLs in pipelines - name: Run serialization security checks   run: dotnet xygeni validate --rules serialization --fail-on-risk 

શૈક્ષણિક નોંધ: એકીકરણ સ્થિર તપાસ તમારા માં CI/CD બધા બિલ્ડ્સમાં સિસ્ટમ ટેક્સ્ટ JSON સીરીયલાઇઝેશન પર સતત નિયંત્રણ સુનિશ્ચિત કરે છે.

 

કેવી રીતે Xygeni Code Security .NET સીરીયલાઇઝેશન સુરક્ષાને મજબૂત બનાવે છે

ઝીગેની Code Security NET માં JsonSerializer ના અસુરક્ષિત System.Text.Json ડિફોલ્ટ અને દુરુપયોગ માટે ઊંડાણપૂર્વક શોધ પૂરી પાડે છે.

તે દાખલાઓ ઓળખે છે જેમ કે:

  • સંવેદનશીલ ક્ષેત્રો મૂળભૂત રીતે શ્રેણીબદ્ધ હોય છે.
  • JSON ડેટાનું અસુરક્ષિત લોગિંગ.
  • ખૂટે છે [જેસનઇગ્નોર] લક્ષણો.
  • ખોટી રીતે ગોઠવેલ સિસ્ટમ ટેક્સ્ટ JSON સીરીયલાઇઝેશન વિકલ્પો.

એકીકૃત કરીને ઝીગેની માં pre-commit hooks, CI/CD pipelines, અથવા PR ગેટ્સ, તમે નબળા સીરીયલાઇઝેશન પેટર્નને મર્જ કરતા પહેલા બ્લોક કરી શકો છો. તે સીરીયલાઇઝેશન ખોટી ગોઠવણીઓને લાગુ કરી શકાય તેવી સુરક્ષા નીતિઓમાં ફેરવીને તમારી હાલની DevSecOps પ્રક્રિયાને પૂરક બનાવે છે.

શૈક્ષણિક નોંધ: ઝાયજેની જેવા સુરક્ષા સાધનો આપમેળે શ્રેણીબદ્ધ સ્વચ્છતા લાગુ કરે છે, વિકાસકર્તાઓને ઓડિટ પર નહીં, કોડ પર ધ્યાન કેન્દ્રિત કરવા માટે મુક્ત કરે છે.

નિષ્કર્ષ - વિશે સિસ્ટમ.ટેક્સ્ટ.જેસન

સિસ્ટમ.ટેક્સ્ટ.જેસન સીરીયલાઇઝેશન ઝડપી બનાવે છે, પરંતુ સુવિધા ઘણીવાર એક્સપોઝરને છુપાવે છે. ડિફોલ્ટ system.text.json સીરીયલાઇઝેશનમાં દરેક જાહેર મિલકતનો સમાવેશ થાય છે, જે સંભવિત રીતે આંતરિક ડેટા, ટોકન્સ અથવા ઓળખકર્તાઓ લીક કરે છે.

વિકાસકર્તાઓએ:

  • તેમના મોડેલોનું ઑડિટ કરો.
  • વાપરવુ [જેસનઇગ્નોર] અને સલામત JsonSerializerવિકલ્પો.
  • આંતરિક વસ્તુઓને શ્રેણીબદ્ધ કરવાનું ટાળો.
  • જેવા સાધનોનો ઉપયોગ કરીને સ્વચાલિત સ્કેનિંગ Xygeni Code Security.

ડિફોલ્ટ સીરીયલાઇઝેશન એ ફક્ત ડેવલપર શોર્ટકટ નથી; તે સંભવિત ડેટા લીક છે. સીરીયલાઇઝેશનને સ્પષ્ટ બનાવો, આઉટપુટ ચકાસો અને સ્વચાલિત તપાસ કરો, કારણ કે સલામત ડિફોલ્ટ હંમેશા સલામત હોતા નથી.

સ્કા-ટૂલ્સ-સોફ્ટવેર-રચના-વિશ્લેષણ-ટૂલ્સ
તમારા સોફ્ટવેર જોખમોને પ્રાથમિકતા આપો, સુધારણા કરો અને સુરક્ષિત કરો
તમારું મફત ખાતું મેળવો.
કોઈ ક્રેડિટ કાર્ડ જરૂરી નથી.

તમારા સોફ્ટવેર ડેવલપમેન્ટ અને ડિલિવરી સુરક્ષિત કરો

ઝાયજેની પ્રોડક્ટ સ્યુટ સાથે