Kategoriler
Genel

C# ve PHP | E-posta adresinin bir kısmını gizlemek

Şifremi unuttum sayfalarında genellikle e-posta ya da kullanıcı adınızı yazın şeklinde bir uyarı görürsünüz, bu alanlarda eğer kayıtlı kullanıcı varsa genelde mail adresinize şifreniz gönderildi gibi bir mesaj görürsünüz. Peki üyeniz kullanıcı adını yazdıysa ve e-posta adresini hatırlamıyorsa ne yapmanız gerekiyor?

Kullanıcı adı girildiğinde cevap olarak e-posta adresini döndürmek pek güvenli bir yöntem değildir, çünkü brute force ile kullanıcı adları denenerek sisteminize üye olan kişilerin e-posta adresleri ele geçirilebilir. Bazı e-posta sağlayıcılar şifremi unuttum kısmında ikincil mailinizi a*********o@gmail.com şeklinde gizleyerek sizin güvenliğinizi sağlamaktadır. İşte vereceğim regex ve örnek program kodları sizin bu gizlemeyi yapmanızı sağlayacak.

string regex = @"(?<=.).(?=.*.{1}@)";

Örnek programlar

C# ile E-posta Regex

using System.IO;
using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string regex = @"(?<=.).(?=.*.{1}@)";

        Console.WriteLine(Regex.Replace("johndoe@hotmail.com", regex, "*"));
        Console.WriteLine(Regex.Replace("lastsamurai@gmail.com", regex, "*"));
        Console.WriteLine(Regex.Replace("alperen@eposta.com", regex, "*"));
        Console.WriteLine(Regex.Replace("john@okul.edu.tr", regex, "*"));
        Console.WriteLine(Regex.Replace("joe@gmail.com", regex, "*"));
        Console.WriteLine(Regex.Replace("jn@gmail.com", regex, "*"));
    }
}

PHP ile E-posta Regex

   $regex = '/(?<=.).(?=.*.{1}@)/u';
   echo preg_replace($regex,'*','johndoe@hotmail.com');

*preg_replace -> PHP 4+ üzerinde çalışmaktadır.
Örnek çıktılar:

j*****e@hotmail.com
l*********i@gmail.com
a*****n@eposta.com
j**n@okul.edu.tr
j*e@gmail.com
jn@gmail.com

Regex yazımı ve fikir için Fikri Abi’ye teşekkürler 🙂