Проблема безопасности: передача конфиденциальных данных, таких как пароль, из childFragments EditText в parentFragment - PullRequest
0 голосов
/ 27 марта 2019

Я разрабатываю приложение DatingApp, и в настоящее время я работаю над процессом входа / регистрации.Из-за некоторых аспектов проектирования у меня есть AuthActivity с MailAuthFragment (с кнопкой "продолжить"!) С EnterMailSubFragment (электронная почта + пароль EditText) / ConfirmMailSubFragmen t (экран, на котором отображается соответствующее письмо с кнопкой повторной проверки).Я хочу, чтобы MailAuthFragment выполнил все операции с базой данных, поэтому моему EnterMailSubFragment нужно только получить записи EditText и безопасно передать их родителю MailAuthFragment .Другая трудность заключается в следующем: я хочу, чтобы содержимое EnterMail и содержимое ConfirmMail перемещалось независимо от моей кнопки «продолжить».Для этого кнопка является частью родительского элемента MailAuthFragment .При нажатии кнопки «Продолжить» onClick() в MailAuthFragment запускается следующий метод:

Fragment mCurrentFragment = getChildFragmentManager().findFragmentById(R.id.fragment_mailauth_container);

    if(mCurrentFragment instanceof EnterMailSubFragment){
        String mMail = ((EnterMailSubFragment) mCurrentFragment).getEmail();
        String mPassword = ((EnterMailSubFragment) mCurrentFragment).getPassword();
        if(mMail == null || mPassword == null){
            return;
        }

Так что мой EnterMailSubFragment имеет открытый метод getEmail() / getPassword().Я не уверен, является ли это безопасным способом передачи некоторых данных из ChildFragment в ParentFragment.Объявление их защищенными также кажется уязвимым.Я мог бы также представить себе использование такого интерфейса в моем ChildFragment EnterMailSubFragment

public interface MailSubFragmentListener{
    void onSendEmail(String mEmail);
    void onSendPassword(String mPassword);
}

private MailSubFragmentListener mCallback;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View mView = inflater.inflate(R.layout.subfragment_mailauth, container, false);
    this.initUiWidgets(mView);
    return mView;
}

public void setListener(MailSubFragmentListener mCallback){
    this.mCallback = mCallback;
}

public static EnterMailSubFragment newInstance(MailSubFragmentListener mCallback){
    EnterMailSubFragment mFragment = new EnterMailSubFragment();
    mFragment.setListener(mCallback);
    return mFragment;
}<br/>

И реализовать его в моем ParentFragment как

  this.performFragmentTransaction(EnterMailSubFragment.newInstance(new EnterMailSubFragment.MailSubFragmentListener() {
        @Override
        public void onSendEmail(String mEmail) {

        }

        @Override
        public void onSendPassword(String mPassword) {

        }
    }),"EnterMail", mEnterAnim);<br/>

Является ли какой-либо из этих подходов достаточно безопасным для передачи паролей и телефонных номеров?

...