Код IT
← Каталог

Рекомендации по разработке на Java — 26.2. Защита персональных данных

Фрагмент из «Рекомендации по разработке на Java»: 26.2. Защита персональных данных.

Java main.java
// Плохо: все поля доступны напрямую
public class User {
    private String email;
    private String phoneNumber;
    private LocalDate birthDate;
    private String address;
    
    public String getEmail() { return email; }
    public String getPhoneNumber() { return phoneNumber; }
    public LocalDate getBirthDate() { return birthDate; }
    public String getAddress() { return address; }
}

// Хорошо: контролируемый доступ
public class User {
    private final String email;
    private final String phoneNumberHash; // хеш для поиска
    private final LocalDate birthDate;
    private final String address;
    
    // Публичный метод для отображения
    public String getObfuscatedEmail() {
        int atIndex = email.indexOf('@');
        if (atIndex <= 1) return email;
        String prefix = email.substring(0, 2) + "***";
        return prefix + email.substring(atIndex);
    }
    
    // Метод только для аутентифицированных пользователей
    public String getEmailForOwner() {
        return email;
    }
    
    // Возраст вместо даты рождения для внешних сервисов
    public int getAge() {
        return Period.between(birthDate, LocalDate.now()).getYears();
    }
    
    // Полная дата рождения только для внутренних операций
    String getBirthDateInternal() {
        return birthDate.toString();
    }
}
// Плохо: все поля доступны напрямую
public class User {
    private String email;
    private String phoneNumber;
    private LocalDate birthDate;
    private String address;
    
    public String getEmail() { return email; }
    public String getPhoneNumber() { return phoneNumber; }
    public LocalDate getBirthDate() { return birthDate; }
    public String getAddress() { return address; }
}

// Хорошо: контролируемый доступ
public class User {
    private final String email;
    private final String phoneNumberHash; // хеш для поиска
    private final LocalDate birthDate;
    private final String address;
    
    // Публичный метод для отображения
    public String getObfuscatedEmail() {
        int atIndex = email.indexOf('@');
        if (atIndex <= 1) return email;
        String prefix = email.substring(0, 2) + "***";
        return prefix + email.substring(atIndex);
    }
    
    // Метод только для аутентифицированных пользователей
    public String getEmailForOwner() {
        return email;
    }
    
    // Возраст вместо даты рождения для внешних сервисов
    public int getAge() {
        return Period.between(birthDate, LocalDate.now()).getYears();
    }
    
    // Полная дата рождения только для внутренних операций
    String getBirthDateInternal() {
        return birthDate.toString();
    }
}