Secure Text Entry — bu nədir, Android-də giriş mühafizəsi və parollar

Müəllif: IT Sectr Dərc olunub: 2026-07-07 Oxuma vaxtı: 9 dəq

Secure Text Entry — Android-də mətn daxiletmə rejimidir, bu zaman daxil edilən simvollar faktiki simvolların əvəzinə gizli formada (nöqtələr və ya ulduz işarələri ilə) göstərilir. Bu rejim parol, PIN-kod, CVV-kod və digər məxfi məlumatların daxil edilməsi sahələri üçün tətbiq edilir. Secure Text Entry yalnız məlumatları vizual ələ keçirmədən qorumur, həm də ekran görüntüləri, ekran yazıları və avtomatik düzəltmə funksiyaları vasitəsilə məlumat sızmasının qarşısını alır. Android Security Best Practices (2026)-ya görə, gizli daxiletmə istifadəçilərin autentifikasiya məlumatlarını emal edən tətbiqlər üçün məcburi tələbdir.

Əsas məqamlar

  • Secure Text Entry — parol daxil edərkən simvolların yerinə nöqtələr göstərən gizli daxiletmə rejimi.
  • Aktivasiya — XML-də inputType="textPassword" və ya kodda TYPE_TEXT_VARIATION_PASSWORD vasitəsilə.
  • Qoruma — vizual ələ keçirmənin, ekran görüntülərinin və avtomatik düzəltmə/lüğət vasitəsilə sızmanın qarşısını alır.
  • TransformationMethod — simvolların göstərilməsini gizli olanlarla əvəz edən Android mexanizmi.
  • Görünmə dəyişdiricisi — TextInputLayout-da endIconMode="password_toggle" vasitəsilə parolu göstərmək imkanı.

Android-də Secure Text Entry nədir

Secure Text Entry (qorunan mətn daxiletmə) — Android-in hər daxil edilən simvolun göstərilməsini maskalayan simvolla, adətən nöqtə (•) və ya ulduz işarəsi (*) ilə əvəz edən funksiyasıdır. Bu, parolun çiynin üstündən oxunmasının (shoulder surfing) qarşısını alır və daxil edilən məlumatları kənar gözlərdən gizlədir. Funksiya həmçinin parol maskalaması kimi tanınır və mobil tətbiqlərdə standart təcrübədir.

Secure Text Entry-nin UITextField-in ayrıca parametri olduğu iOS-dan fərqli olaraq, Android-də bu funksiya PASSWORD variasiyası ilə inputType atributu vasitəsilə aktivləşdirilir. EditText inputType="textPassword" aldıqda avtomatik olaraq PasswordTransformationMethod — simvolların əvəz edilməsinə cavabdeh olan sinifi tətbiq edir. Hər yeni simvol daxil edildikdə EditText onu dərhal TransformationMethod interfeysi mexanizmi vasitəsilə maskalayan simvolla əvəz edir.

Android Source Code (AOSP, 2026)-ya görə, PasswordTransformationMethod tətbiqi maskalayan simvolların çəkilməsi üçün TextPaint sinifindən istifadə edir. Maskalayan simvolun ölçüsü sahənin şrift ölçüsü ilə üst-üstə düşür ki, bu da sözün uzunluğu vasitəsilə məlumat sızmasının qarşısını alır — bütün simvollar eyni genişlikdə görünür. Bu, daxil edilən məlumatların uzunluğunun analizinə əsaslanan hücumlardan qorunmaq üçün vacibdir.

xml
<!-- Basic Secure Text Entry example -->
@+id/etPassword
android:layout_width="match_parent"
android:hint="Enter password"
android:inputType="textPassword"
android:maxLength="64"
android:importantForAutofill="yes" />

Secure Text Entry necə işləyir

Android-də Secure Text Entry mexanizmi android.text.method paketində təyin edilmiş TransformationMethod interfeysinə əsaslanır. PasswordTransformationMethod — getTransformation() metodunu ləğv edən, göstərilmək üçün əvəz edilmiş simvol ardıcıllığını qaytaran quraşdırılmış tətbiqdir. Bununla yanaşı, Editable-də orijinal mətn dəyişməz qalır — yalnız onun vizual təsviri dəyişir.

İstifadəçi simvol daxil etdikdə EditText dispatchEvent-i çağırır və simvolu InputConnection-a ötürür, o da onu Editable-ə əlavə edir. Sonra EditText cari TransformationMethod-un getTransformation() metodunu çağırır, o, orijinal CharSequence-i alır və maskalayan simvollarla SpannableString qaytarır. Bu SpannableString orijinal mətnin əvəzinə ekranda çəkilir. Əsas xüsusiyyət — çevrilmənin özü Editable-ın məzmununu dəyişmir, buna görə də getText().toString() çağırıldıqda real daxil edilmiş mətn qaytarılır.

Android Developers Reference (2026)-ya görə, PasswordTransformationMethod hər simvola glifi nöqtə ilə əvəz edən MetricAffectingSpan əlavə edir. Bu span-lar mətnin uzunluğuna təsir etmir, buna görə də kursor və daxiletmə mövqeyi gizli göstərmə zamanı belə düzgün saxlanılır. Həmçinin VisiblePasswordTransformationMethod mövcuddur, o, son daxil edilmiş simvolu qısa müddətə göstərir (iOS-a bənzər).

kotlin
// PasswordTransformationMethod - quraşdırılmış maskalama
editText.transformationMethod = PasswordTransformationMethod.getInstance()

// VisiblePasswordTransformationMethod - son simvolu göstərir
editText.transformationMethod = VisiblePasswordTransformationMethod.getInstance()

Parol görünməsinin dəyişdirilməsi

Görünmənin dəyişdirilməsi (password visibility toggle) — istifadəçiyə formanı göndərməzdən əvvəl yoxlamaq üçün daxil edilmiş parolu müvəqqəti göstərməyə imkan verən funksiyadır. Android-də bu funksiya app:endIconMode="password_toggle" atributu ilə TextInputLayout vasitəsilə həyata keçirilir. Göz işarəsinə klik edildikdə sahə textPassword və textVisiblePassword arasında keçid edir.

TextInputLayout-da password_toggle tətbiqi avtomatik olaraq daxili EditText-in inputType-nı dəyişir və işarəni animasiya edir (açıq/bağlı göz). Bu keçid zamanı kursor mövqeyinin sıfırlana biləcəyini xatırlamaq vacibdir, buna görə TextInputLayout rejim dəyişikliyindən sonra mövqeyi saxlayır və bərpa edir. Həmçinin görünən parola keçid zamanı avtomatik düzəltmə və təkliflər aktivləşdirilmir — adi text deyil, TYPE_TEXT_VARIATION_VISIBLE_PASSWORD istifadə olunur.

Material Design Guidelines (2025)-ə görə, parol göstərmə işarəsi həmişə görünməli olmalıdır, yalnız sahə fokusda olanda deyil. İstifadəçi istənilən vaxt parolu yoxlamaq imkanına malik olmalıdır. İşarə müəyyən müddətdən sonra avtomatik parolu gizlətməməlidir — yalnız istifadəçinin hərəkəti ilə.

xml
<!-- TextInputLayout with password toggle -->
@+id/tilPassword
android:layout_width="match_parent"
app:endIconMode="password_toggle"
app:passwordToggleTint="@color/primary">

    @+id/etPassword
    android:inputType="textPassword"
    android:hint="Password" />

</com.google.android.material.textfield.TextInputLayout>

Secure Text Entry-nin proqram konfiqurasiyası

Kotlin-də Secure Text Entry-nin proqram qurulması inputType-ın təyin edilməsi və ya setTransformationMethod() vasitəsilə həyata keçirilir. Hər iki yanaşma eyni nəticəyə gətirib çıxarır, lakin detallarda fərqlənir. inputType-ın təyin edilməsi əlavə olaraq avtomatik düzəltmə və təklifləri konfiqurasiya edir, halbuki setTransformationMethod yalnız simvolların göstərilməsinə təsir edir.

TextInputLayout vasitəsilə parol dəyişdiricisi nümunəsi

kotlin
// Proqram vasitəsilə parol görünməsinin dəyişdirilməsi
fun togglePasswordVisibility(til: TextInputLayout) {
    val editText = til.editText ?: return
    val currentType = editText.inputType
    val isPassword = (currentType and
        InputType.TYPE_TEXT_VARIATION_PASSWORD) != 0

    if (isPassword) {
        editText.inputType = InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
    } else {
        editText.inputType = InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
    }

    // Kursor mövqeyini bərpa et
    val cursorPos = editText.selectionStart
    editText.setSelection(maxOf(0, cursorPos))
}

Xüsusi TransformationMethod

kotlin
// Xüsusi maskalama — yalnız son 4 simvolu göstərir
class PartialPasswordTransformation : TransformationMethod {
    override fun getTransformation(source: CharSequence?,
        view: View?): CharSequence {
        val text = source?.toString() ?: ""
        if (text.length <= 4) return text

        val dots = "\u2022".repeat(text.length - 4)
        return dots + text.substring(text.length - 4)
    }

    override fun onFocusChanged(view: View?,
        sourceText: CharSequence?,
        focused: Boolean,
        direction: Int,
        previouslyFocusedRect: android.graphics.Rect?) {}
}

Gizli daxiletmənin təhlükəsizlik aspektləri

Secure Text Entry bir neçə səviyyədə qoruma təmin edir. Vizual maskalama parolun çiynin üstündən oxunmasının (shoulder surfing) — ictimai yerlərdə parol oğurluğunun ən geniş yayılmış metodunun qarşısını alır. Avtomatik düzəltmənin söndürülməsi parolun istifadəçi lüğətində saxlanmasının qarşısını alır, bu da onun prediktiv daxiletmə vasitəsilə sızmasını istisna edir. Ekran görüntülərindən qorunma (FLAG_SECURE aktivdirsə) digər tətbiqlərə sahənin məzmununu ələ keçirməyə imkan vermir.

Lakin Secure Text Entry tam qoruma deyil. Sistem səviyyəsində daxiletmənin ələ keçirilməsi (keylogging) hücumları InputConnection-dan real simvolları əldə edə bilər. Əlçatanlıq xidməti olan zərərli tətbiqlər simvollar ekranda gizlənsə belə EditText-in məzmununu oxuya bilər. Həmçinin məlumatların serverə ötürülməsi zamanı SSL-sniffing sertifikatın düzgün validasiyası olmadan HTTPS istifadə edilmədikdə parolu aşkar edə bilər.

OWASP Mobile Security Testing Guide (2025)-ə görə, Android-də parolların maksimum qorunması üçün tövsiyə olunur: kritik sahələr üçün inputType="textPassword" + autofill-i söndürmək; parolu yaddaşda lazım olduğundan artıq saxlamaq; tətbiq minimuma endirildikdə parol sahəsini təmizləmək (onPause/onStop); parol qısa müddətə göstərilsə belə maskalamadan istifadə etmək.

Qoruma səviyyəsiSecure Text EntryƏlavə tədbirlər
Vizual ələ keçirməSimvolların maskalanmasıBiometric auth, shoulder surfing-dən qaçın
Ekran görüntüləriQismən (tətbiqdən asılıdır)Window-da FLAG_SECURE
KeyloggingQorumurTəhlükəsiz daxiletmə ilə IME istifadə edin
Avtomatik düzəltmə/lüğətSöndürülübpassword üçün susmaya görə söndürülüb
Şəbəkə ələ keçirməsiQorumurSertifikat pinning ilə HTTPS

Secure Text Entry üçün ən yaxşı təcrübələr

Android tərtibatçıları gizli daxiletmə ilə işləyərkən bir neçə əsas təcrübəyə riayət etməlidirlər. Birincisi, parol sahələri üçün həmişə endIconMode="password_toggle" ilə TextInputLayout istifadə edin — bu Material Design-ın müasir standartıdır. İkincisi, parolu göstərmək imkanını söndürməyin — istifadəçi xüsusilə kiçik klaviaturaya malik mobil cihazlarda nə daxil etdiyini yoxlamaq imkanına malik olmalıdır.

Secure Text Entry həmçinin avtomatik doldurmanın düzgün konfiqurasiyasını tələb edir. Parol sahələri üçün mütləq autofillHints="password" və ya autofillHints="newPassword" təyin edin ki, parol menecerləri məlumatları düzgün doldura və saxlaya bilsinlər. Yeni parolun təsdiq sahəsi üçün autofillHints="newPassword" istifadə edin ki, sistem onu cari saxlanmış parolla doldurmağı təklif etməsin.

  • TextInputLayout — görünmə dəyişdiricisi üçün Material Design TextInputLayout-dan endIconMode ilə istifadə edin.
  • Autofill — menecerlərin dəstəyi üçün autofillHints="password" və importantForAutofill="yes" əlavə edin.
  • Təmizləmə — tətbiq minimuma endirildikdə parol sahəsini təmizləyin (onPause/onStop).
  • Uzunluq — parolun uzunluğunu çox sərt məhdudlaşdırmayın (minimum 8 simvol, sərt maksimum olmadan).
  • Biometriya — parolun əl ilə daxil edilməsinə alternativ olaraq biometrik giriş (BiometricPrompt) təklif edin.
kotlin
// Avtomatik doldurma və təmizləmə ilə tam parol sahəsi
class SecurePasswordField {
    private fun setupPasswordField(til: TextInputLayout) {
        val editText = til.editText ?: return
        editText.inputType = InputType.TYPE_CLASS_TEXT or
            InputType.TYPE_TEXT_VARIATION_PASSWORD
        editText.setAutofillHints(View.AUTOFILL_HINT_PASSWORD>)
        editText.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_YES
    }

    fun clearOnPause(editText: EditText) {
        editText.text?.clear()
    }
}

Tez-tez verilən suallar

textPassword və textVisiblePassword arasında fərq nədir?

textPassword bütün daxil edilən simvolları gizlədir və avtomatik düzəltməni söndürür. textVisiblePassword də avtomatik düzəltməni söndürür, lakin simvolları açıq formada göstərir. textVisiblePassword parol görünməsinin dəyişdirilməsi zamanı istifadə olunur — bu adi text deyil, çünki avtomatik düzəltmə və təkliflər təhlükəsizlik üçün söndürülmüş qalır.

Parol maskalaması üçün xüsusi simvol hazırlamaq mümkündürmü?

Bəli, TransformationMethod interfeysini tətbiq edən xüsusi sinif yaradın. getTransformation() metodunu ləğv edin, lazımi əvəz simvolu ilə CharSequence qaytarın. Onu editText.transformationMethod = CustomPasswordTransformation() vasitəsilə təyin edin. Unutmayın ki, simvol təhlükəsizlik üçün monogenişlikdə olmalıdır.

Niyə parolu göstərmək imkanını söndürmək tövsiyə edilmir?

Kiçik ekranları və sensor klaviatura olan mobil cihazlarda parol daxil edərkən səhv ehtimalı masaüstü kompüterdən əhəmiyyətli dərəcədə yüksəkdir. Daxil edilmiş parolu yoxlamaq imkanı daxiletmə səhvlərinin sayını azaldır və parolun bərpası sorğularının sayını azaldır, bu da istifadəçi təcrübəsini yaxşılaşdırır və dəstək yükünü azaldır.

Parolu tətbiqin ekran görüntülərindən necə qorumaq olar?

Activity və ya Dialog pəncərəsində FLAG_SECURE bayrağını təyin edin: window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE). Bu, bütün pəncərə üçün ekran görüntülərinin yaradılmasının və ekran yazısının qarşısını alacaq. Lakin nəzərə alın ki, bu, adi məzmun üçün də ekran görüntülərini söndürəcək, bu arzuolunmaz ola bilər.

Autofill password sahələri üçün necə işləyir?

Android 8.0-dan (API 26) başlayaraq, Autofill Framework avtomatik olaraq password sahələrini inputType vasitəsilə müəyyən edir. Düzgün işləməsi üçün importantForAutofill="yes" təyin edin və autofillHints ("password", "newPassword", "emailAddress") qeyd edin. Gboard və parol menecerləri saxlanmış parolları təklif etmək üçün bu atributlardan istifadə edir.

Nəticə

  • Secure Text Entry — PasswordTransformationMethod vasitəsilə simvolları maskalayan simvollarla (nöqtələrlə) əvəz edən gizli daxiletmə rejimi.
  • Aktivasiya — inputType="textPassword" və ya TYPE_TEXT_VARIATION_PASSWORD proqram qurulması vasitəsilə.
  • PasswordTransformationMethod — Editable-i dəyişmədən simvolların göstərilməsini əvəz edən Android-in quraşdırılmış sinfi.
  • Görünmə dəyişdiricisi — endIconMode="password_toggle" və TYPE_TEXT_VARIATION_VISIBLE_PASSWORD ilə TextInputLayout vasitəsilə həyata keçirilir.
  • Qoruma — shoulder surfing, ekran görüntülərinin (FLAG_SECURE ilə), avtomatik düzəltmənin və lüğətə yazmanın qarşısını alır.
  • Autofill — parol menecerlərinin dəstəyi üçün importantForAutofill və autofillHints="password" əlavə edin.
  • Ən yaxşı təcrübələr — TextInputLayout istifadə edin, sahəni minimuma endirərkən təmizləyin, parolun uzunluğunu sərt məhdudlaşdırmayın.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun