Sensitive Data Exclusion Techniques

Exclusion Strategy এবং JSON Property কাস্টমাইজেশন - জিসন (Gson) - Java Technologies

338

Gson ব্যবহার করে Sensitive Data Exclusion করতে হলে, আপনি সাধারণত কিছু কৌশল ব্যবহার করেন যাতে গোপন বা সংবেদনশীল তথ্য (যেমন পাসওয়ার্ড, ক্রেডেনশিয়ালস ইত্যাদি) JSON রেসপন্সে প্রকাশ না পায়। Gson কিছু কাস্টমাইজেশন পদ্ধতি সরবরাহ করে যা আপনাকে এই ধরনের তথ্য ফিল্টার করতে সাহায্য করতে পারে।

এখানে কয়েকটি পদ্ধতি দেওয়া হল যেগুলোর মাধ্যমে আপনি Sensitive Data Exclusion করতে পারেন:

1. @Expose অ্যানোটেশন এবং GsonBuilder এর মাধ্যমে Sensitive Data Exclusion

Gson এ @Expose অ্যানোটেশন ব্যবহার করে আপনি স্পেসিফিক ফিল্ডগুলোকে JSON এ এক্সপোজ (প্রকাশ) করতে পারেন, এবং অন্যগুলোকে exclude (অবহেলা) করতে পারেন। এটা বিশেষ করে তখন কাজে আসে যখন আপনি কিছু ফিল্ড বা প্রপার্টি JSON আউটপুটে অন্তর্ভুক্ত করতে চান না।

উদাহরণ:

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;

class User {
    @Expose
    String username;

    @Expose(serialize = false) // Sensitive data (password) will not be included in the JSON output
    String password;

    @Expose
    String email;

    public User(String username, String password, String email) {
        this.username = username;
        this.password = password;
        this.email = email;
    }
}

public class GsonSensitiveDataExample {
    public static void main(String[] args) {
        // Create a User object
        User user = new User("john_doe", "secret_password", "john.doe@example.com");

        // GsonBuilder to include only fields with @Expose annotation
        Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();

        // Convert User object to JSON
        String json = gson.toJson(user);
        System.out.println(json);
    }
}

আউটপুট:

{"username":"john_doe","email":"john.doe@example.com"}

ব্যাখ্যা:

  • @Expose অ্যানোটেশন ব্যবহার করা হয়েছে username এবং email ফিল্ডে, কিন্তু password ফিল্ডে @Expose(serialize = false) ব্যবহার করা হয়েছে, যার মানে হল যে এই ফিল্ডটি JSON আউটপুটে অন্তর্ভুক্ত হবে না।
  • GsonBuilder().excludeFieldsWithoutExposeAnnotation() এর মাধ্যমে আমরা কেবলমাত্র সেই ফিল্ডগুলো JSON এ অন্তর্ভুক্ত করেছি যেগুলোর উপর @Expose অ্যানোটেশন ব্যবহার করা হয়েছে।

2. কাস্টম JsonSerializer দিয়ে Sensitive Data Exclusion

আপনি JsonSerializer ইন্টারফেস ব্যবহার করে আরও কাস্টমাইজড ভাবে Sensitive Data ফিল্টার করতে পারেন। এই ক্ষেত্রে, আপনি JSON এর প্রক্রিয়াকরণে কাস্টম লজিক প্রয়োগ করে কিছু ফিল্ড বাদ দিতে পারেন।

উদাহরণ:

import com.google.gson.*;
import java.lang.reflect.Type;

class User {
    String username;
    String password;
    String email;

    public User(String username, String password, String email) {
        this.username = username;
        this.password = password;
        this.email = email;
    }
}

class UserSerializer implements JsonSerializer<User> {
    @Override
    public JsonElement serialize(User user, Type typeOfSrc, JsonSerializationContext context) {
        JsonObject jsonObject = new JsonObject();
        jsonObject.addProperty("username", user.username);
        jsonObject.addProperty("email", user.email);  // Exclude password
        return jsonObject;
    }
}

public class GsonCustomSensitiveDataExample {
    public static void main(String[] args) {
        // Create User object
        User user = new User("john_doe", "secret_password", "john.doe@example.com");

        // Use GsonBuilder with custom serializer
        Gson gson = new GsonBuilder().registerTypeAdapter(User.class, new UserSerializer()).create();

        // Convert User object to JSON
        String json = gson.toJson(user);
        System.out.println(json);
    }
}

আউটপুট:

{"username":"john_doe","email":"john.doe@example.com"}

ব্যাখ্যা:

  • এই উদাহরণে, UserSerializer কাস্টম JsonSerializer তৈরি করা হয়েছে যাতে password ফিল্ডটি JSON আউটপুট থেকে বাদ পড়ে এবং শুধুমাত্র usernameemail JSON এ অন্তর্ভুক্ত হয়।
  • GsonBuilder দিয়ে কাস্টম UserSerializer ব্যবহার করা হয়েছে JSON রূপান্তরের সময় sensitive data (যেমন password) বাদ দেওয়ার জন্য।

3. transient ফিল্ড ব্যবহার করে Sensitive Data Exclusion

Java এর transient কীওয়ার্ড ব্যবহার করে আপনি কিছু ফিল্ডকে Serialization থেকে বাদ দিতে পারেন। Gson এই transient ফিল্ডগুলোকে JSON আউটপুটে অন্তর্ভুক্ত করবে না।

উদাহরণ:

import com.google.gson.Gson;

class User {
    String username;
    transient String password;  // 'password' field will be excluded from JSON serialization
    String email;

    public User(String username, String password, String email) {
        this.username = username;
        this.password = password;
        this.email = email;
    }
}

public class GsonTransientSensitiveDataExample {
    public static void main(String[] args) {
        // Create a User object
        User user = new User("john_doe", "secret_password", "john.doe@example.com");

        // Create a Gson object
        Gson gson = new Gson();

        // Convert User object to JSON
        String json = gson.toJson(user);
        System.out.println(json);
    }
}

আউটপুট:

{"username":"john_doe","email":"john.doe@example.com"}

ব্যাখ্যা:

  • transient কীওয়ার্ড ব্যবহার করা হয়েছে password ফিল্ডের সাথে, তাই Gson এই ফিল্ডটি JSON আউটপুটে অন্তর্ভুক্ত করবে না।
  • @Expose অ্যানোটেশন এবং GsonBuilder ব্যবহার করে আপনি সহজেই sensitive data ফিল্টার করতে পারেন।
  • JsonSerializer দিয়ে কাস্টম লজিক প্রয়োগ করে আরও উন্নত কাস্টমাইজেশন করা যায়।
  • transient কীওয়ার্ড ব্যবহার করে কিছু ফিল্ডকে JSON থেকে বাদ দেওয়া যায়।

এই পদ্ধতিগুলি ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনে sensitive data নিরাপদ রাখতে পারেন এবং JSON এ শুধুমাত্র প্রয়োজনীয় তথ্য প্রকাশ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...