{"id":44921,"date":"2026-09-27T09:03:34","date_gmt":"2026-09-27T06:03:34","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/"},"modified":"2026-09-27T09:04:12","modified_gmt":"2026-09-27T06:04:12","slug":"secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/","title":{"rendered":"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu"},"content":{"rendered":"<h2>Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kimli\u011fimizin bir uzant\u0131s\u0131 haline gelen hesaplar\u0131m\u0131z ve bu hesaplar\u0131n g\u00fcvenli\u011fi, her zamankinden daha kritik bir \u00f6nem ta\u015f\u0131yor. Her ge\u00e7en g\u00fcn kulland\u0131\u011f\u0131m\u0131z uygulama ve servis say\u0131s\u0131 artarken, bu platformlara \u00f6zg\u00fc g\u00fc\u00e7l\u00fc ve benzersiz \u015fifreler olu\u015fturmak ve bunlar\u0131 ak\u0131lda tutmak giderek zorla\u015f\u0131yor. \u0130\u015fte tam da bu noktada, &#8220;benim i\u00e7in yeterince iyi de\u011fil&#8221; d\u00fc\u015f\u00fcncesiyle yola \u00e7\u0131kan, se\u00e7ici bir kullan\u0131c\u0131n\u0131n kendi \u015fifre y\u00f6neticisini geli\u015ftirme ser\u00fcvenine tan\u0131kl\u0131k edece\u011fiz. Bu makale, sadece bir \u015fifre y\u00f6neticisi olu\u015fturman\u0131n teknik detaylar\u0131n\u0131 de\u011fil, ayn\u0131 zamanda bu s\u00fcrecin ard\u0131ndaki motivasyonu, kar\u015f\u0131la\u015f\u0131lan zorluklar\u0131 ve nihayetinde elde edilen tatmini de derinlemesine ele alacak. Bu yolculuk boyunca, temel \u015fifre y\u00f6netimi prensiplerinden ba\u015flayarak, modern g\u00fcvenlik standartlar\u0131na uygun bir \u00e7\u00f6z\u00fcm geli\u015ftirmeye kadar uzanan ad\u0131mlar\u0131 inceleyece\u011fiz.<\/p>\n<h2>Neden Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirdim?<\/h2>\n<p>Dijital ayak izimiz her ge\u00e7en g\u00fcn b\u00fcy\u00fcrken, \u00e7evrimi\u00e7i varl\u0131\u011f\u0131m\u0131z\u0131n temelini olu\u015fturan hesaplar\u0131m\u0131z\u0131n g\u00fcvenli\u011fi hayati bir \u00f6nem kazan\u0131yor. \u0130nternet \u00fczerindeki her bir platform, ki\u015fisel bilgilerimizin birer deposu niteli\u011finde. Sosyal medya hesaplar\u0131ndan e-ticaret sitelerine, bankac\u0131l\u0131k uygulamalar\u0131ndan bulut depolama servislerine kadar uzanan geni\u015f bir yelpazede, g\u00fcvenli ve benzersiz \u015fifreler kullanmak, siber sald\u0131r\u0131lara kar\u015f\u0131 en etkili savunma hatlar\u0131ndan biridir. Ancak, g\u00fcn\u00fcm\u00fcz\u00fcn dijital ekosisteminde ortalama bir kullan\u0131c\u0131n\u0131n kulland\u0131\u011f\u0131 \u00e7evrimi\u00e7i servis say\u0131s\u0131 onlarca, hatta y\u00fczlerce olabilir. Bu kadar \u00e7ok hesaba kar\u015f\u0131l\u0131k gelen, ak\u0131lda kal\u0131c\u0131 ama ayn\u0131 zamanda g\u00fc\u00e7l\u00fc \u015fifreler \u00fcretmek ve bunlar\u0131 g\u00fcvenli bir \u015fekilde saklamak, \u00e7o\u011fu insan i\u00e7in neredeyse imkans\u0131z bir g\u00f6rev haline gelmi\u015ftir. \u0130\u015fte bu noktada, mevcut \u015fifre y\u00f6netimi \u00e7\u00f6z\u00fcmlerinin sundu\u011fu olanaklar\u0131 sorgulamaya ba\u015flad\u0131m.<\/p>\n<p>Piyasada bir\u00e7ok pop\u00fcler \u015fifre y\u00f6neticisi bulunuyor. Bu uygulamalar genellikle g\u00fc\u00e7l\u00fc \u015fifreler \u00fcretme, \u015fifreleri g\u00fcvenli bir \u015fekilde saklama ve farkl\u0131 cihazlar aras\u0131nda senkronize etme gibi temel i\u015flevleri sunuyor. Ancak, benim gibi &#8220;se\u00e7ici&#8221; bir kullan\u0131c\u0131 i\u00e7in bu \u00e7\u00f6z\u00fcmlerin baz\u0131lar\u0131, beklentilerimi tam olarak kar\u015f\u0131lam\u0131yordu. Bu beklentiler sadece fonksiyonellik \u00fczerine kurulu de\u011fildi; ayn\u0131 zamanda veri gizlili\u011fi, a\u00e7\u0131k kaynak kodlu olma tercihi, \u00f6zelle\u015ftirme esnekli\u011fi ve hatta baz\u0131 uygulamalar\u0131n &#8220;bulut ba\u011f\u0131ml\u0131l\u0131\u011f\u0131&#8221; gibi konular da benim i\u00e7in \u00f6nemliydi. Mevcut \u00e7\u00f6z\u00fcmlerin \u00e7o\u011funda, \u015fifrelerimizin b\u00fcy\u00fck \u00f6l\u00e7\u00fcde \u00fc\u00e7\u00fcnc\u00fc parti sunucular\u0131nda saklanmas\u0131 ve bu verilerin nas\u0131l i\u015flendi\u011fi konusunda tam bir \u015feffafl\u0131k olmamas\u0131, benim i\u00e7in bir endi\u015fe kayna\u011f\u0131yd\u0131. Ayr\u0131ca, baz\u0131 uygulamalar\u0131n kullan\u0131c\u0131 aray\u00fczleri karma\u015f\u0131k veya benim i\u015f ak\u0131\u015f\u0131ma uygun de\u011fildi. Kendi veri g\u00fcvenli\u011fimi ve gizlili\u011fimi en \u00fcst d\u00fczeyde kontrol alt\u0131nda tutma iste\u011fim, beni kendi \u015fifre y\u00f6neticimi geli\u015ftirme fikrine y\u00f6neltti. Bu, sadece bir teknik proje olmaktan \u00f6te, ki\u015fisel verilerimin kontrol\u00fcn\u00fc tamamen kendi ellerime alma iradesinin bir g\u00f6stergesiydi.<\/p>\n<h2>Temel \u015eifre Y\u00f6netimi Prensipleri ve G\u00fcvenlik Mimarisi<\/h2>\n<p>Kendi \u015fifre y\u00f6neticimizi in\u015fa etmeye ba\u015flamadan \u00f6nce, g\u00fcvenli bir \u015fifre y\u00f6netiminin temel ta\u015flar\u0131n\u0131 anlamak b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu, sadece g\u00fc\u00e7l\u00fc \u015fifreler olu\u015fturmakla s\u0131n\u0131rl\u0131 de\u011fildir; ayn\u0131 zamanda bu \u015fifreleri nas\u0131l saklad\u0131\u011f\u0131m\u0131z, nas\u0131l eri\u015fti\u011fimiz ve verilerimizin gizlili\u011fini nas\u0131l sa\u011flad\u0131\u011f\u0131m\u0131z gibi daha geni\u015f bir perspektifi kapsar. \u00d6ncelikle, g\u00fc\u00e7l\u00fc bir \u015fifrenin ne anlama geldi\u011fini netle\u015ftirelim. G\u00fc\u00e7l\u00fc bir \u015fifre; uzunlu\u011fu (en az 12-14 karakter \u00f6nerilir), karma\u015f\u0131kl\u0131\u011f\u0131 (b\u00fcy\u00fck ve k\u00fc\u00e7\u00fck harfler, rakamlar ve sembollerin bir arada kullan\u0131lmas\u0131) ve tahmin edilebilirli\u011fin olmamas\u0131 (ki\u015fisel bilgilerden, yayg\u0131n kelimelerden veya ard\u0131\u015f\u0131k karakterlerden ka\u00e7\u0131n\u0131lmas\u0131) gibi \u00f6zelliklere sahip olmal\u0131d\u0131r. Ancak, bu kadar \u00e7ok say\u0131da g\u00fc\u00e7l\u00fc \u015fifreyi ak\u0131lda tutmak m\u00fcmk\u00fcn olmad\u0131\u011f\u0131ndan, \u015fifre y\u00f6neticileri devreye girer.<\/p>\n<p>\u015eifre y\u00f6neticilerinin temel i\u015flevi, t\u00fcm \u015fifrelerimizi tek bir g\u00fcvenli &#8220;kasa&#8221;da toplamakt\u0131r. Bu kasa, genellikle ana bir \u015fifre (master password) ile korunur. Bu ana \u015fifre, \u015fifre y\u00f6neticimizin en kritik g\u00fcvenlik katman\u0131d\u0131r. Bu nedenle, ana \u015fifremizin de son derece g\u00fc\u00e7l\u00fc ve benzersiz olmas\u0131 zorunludur. Bir \u015fifre y\u00f6neticisi geli\u015ftirirken, verilerimizin nas\u0131l saklanaca\u011f\u0131 ve \u015fifrelenece\u011fi mimarisi hayati \u00f6nem ta\u015f\u0131r. En yayg\u0131n ve g\u00fcvenli y\u00f6ntemlerden biri, verileri yerel olarak (kullan\u0131c\u0131n\u0131n cihaz\u0131nda) \u015fifreleyip saklamakt\u0131r. Bu durumda, \u015fifreler yaln\u0131zca ana \u015fifre girildi\u011finde \u00e7\u00f6z\u00fclebilir hale gelir. E\u011fer verilerin bulutta senkronize edilmesi isteniyorsa, \u015fifreleme i\u015flemi istemci taraf\u0131nda (kullan\u0131c\u0131n\u0131n cihaz\u0131nda) yap\u0131lmal\u0131 ve yaln\u0131zca \u015fifrelenmi\u015f veriler buluta g\u00f6nderilmelidir. Bu, bulut sa\u011flay\u0131c\u0131s\u0131n\u0131n bile \u015fifrelerinize eri\u015fememesini sa\u011flar. G\u00fcncel ve g\u00fcvenilir \u015fifreleme algoritmalar\u0131 (\u00f6rne\u011fin, AES-256) kullanmak, bu g\u00fcvenlik mimarisinin temelini olu\u015fturur. Ayr\u0131ca, verilerin b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak ve yetkisiz de\u011fi\u015fiklikleri \u00f6nlemek i\u00e7in kriptografik hash fonksiyonlar\u0131 da kullan\u0131labilir.<\/p>\n<p>Bir di\u011fer \u00f6nemli g\u00fcvenlik prensibi ise iki fakt\u00f6rl\u00fc kimlik do\u011frulama (2FA) deste\u011fidir. Ana \u015fifremize ek olarak, ikinci bir do\u011frulama fakt\u00f6r\u00fc (\u00f6rne\u011fin, bir mobil uygulama taraf\u0131ndan \u00fcretilen kod veya fiziksel bir g\u00fcvenlik anahtar\u0131) gerektirmek, yetkisiz eri\u015fim riskini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. Kendi \u015fifre y\u00f6neticimizi tasarlarken, bu temel g\u00fcvenlik prensiplerini g\u00f6z \u00f6n\u00fcnde bulundurarak, kullan\u0131c\u0131lar\u0131m\u0131z\u0131n verilerini en \u00fcst d\u00fczeyde koruyacak bir yap\u0131 kurmay\u0131 hedefledik. Bu, sadece teknik bir gereklilik de\u011fil, ayn\u0131 zamanda kullan\u0131c\u0131 g\u00fcvenini in\u015fa etmenin de temelidir.<\/p>\n<h2>Teknoloji Se\u00e7imi ve Geli\u015ftirme Ortam\u0131n\u0131n Kurulumu<\/h2>\n<p>Kendi \u015fifre y\u00f6neticimizi geli\u015ftirmeye karar verdikten sonraki en \u00f6nemli ad\u0131mlardan biri, do\u011fru teknoloji y\u0131\u011f\u0131n\u0131n\u0131 (technology stack) se\u00e7mektir. Bu se\u00e7im, projenin \u00f6l\u00e7e\u011fi, geli\u015ftirme h\u0131z\u0131, g\u00fcvenlik gereksinimleri ve uzun vadeli s\u00fcrd\u00fcr\u00fclebilirlik gibi bir\u00e7ok fakt\u00f6re ba\u011fl\u0131d\u0131r. Benim durumumda, hem masa\u00fcst\u00fc hem de potansiyel olarak mobil platformlarda \u00e7al\u0131\u015fabilecek, modern ve esnek bir \u00e7\u00f6z\u00fcm hedefliyordum. Bu nedenle, JavaScript ekosistemine odaklanmak mant\u0131kl\u0131 bir se\u00e7enekti.<\/p>\n<p>Masa\u00fcst\u00fc uygulamalar\u0131 i\u00e7in Electron gibi framework&#8217;ler, web teknolojilerini (HTML, CSS, JavaScript) kullanarak \u00e7apraz platform uygulamalar\u0131 geli\u015ftirmeye olanak tan\u0131r. Bu, mevcut web geli\u015ftirme becerilerimi kullanmam\u0131 sa\u011flayacak ve geli\u015ftirme s\u00fcrecini h\u0131zland\u0131racakt\u0131. Electron, Node.js \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, dosya sistemi eri\u015fimi, yerel depolama ve di\u011fer sistem d\u00fczeyindeki i\u015flemleri kolayca ger\u00e7ekle\u015ftirebiliriz. Bu, \u015fifrelerimizi yerel olarak g\u00fcvenli bir \u015fekilde saklamak i\u00e7in kritik bir gerekliliktir. Veritaban\u0131 olarak ise, hafif ve g\u00f6m\u00fcl\u00fc (embedded) bir veritaban\u0131 \u00e7\u00f6z\u00fcm\u00fc olan SQLite&#8217;\u0131 tercih ettim. SQLite, kurulum gerektirmeyen, dosya tabanl\u0131 bir veritaban\u0131d\u0131r ve hassas verileri yerel olarak saklamak i\u00e7in olduk\u00e7a uygundur. Veri \u015fifreleme konusunda ise, g\u00fc\u00e7l\u00fc ve kan\u0131tlanm\u0131\u015f algoritmalar sunan k\u00fct\u00fcphaneleri kullanmak esast\u0131r. Node.js ekosisteminde bulunan <code>crypto<\/code> mod\u00fcl\u00fc, AES-256 gibi \u015fifreleme algoritmalar\u0131 i\u00e7in g\u00fc\u00e7l\u00fc destek sunar. Bu mod\u00fcl\u00fc kullanarak, veritaban\u0131na yaz\u0131lacak t\u00fcm hassas bilgileri (\u015fifreler, kullan\u0131c\u0131 adlar\u0131 vb.) ana \u015fifreye dayal\u0131 olarak \u015fifreleyebiliriz.<\/p>\n<p>Geli\u015ftirme ortam\u0131n\u0131 kurmak i\u00e7in ise, modern bir JavaScript geli\u015ftirme ortam\u0131 gereklidir. Node.js ve npm (Node Package Manager) veya yarn gibi paket y\u00f6neticileri, gerekli k\u00fct\u00fcphaneleri kurmak ve projeyi y\u00f6netmek i\u00e7in kullan\u0131lacakt\u0131r. Bir kod edit\u00f6r\u00fc olarak Visual Studio Code gibi geli\u015fmi\u015f bir IDE (Integrated Development Environment), kod yazmay\u0131, hata ay\u0131klamay\u0131 (debugging) ve projeyi organize etmeyi kolayla\u015ft\u0131racakt\u0131r. S\u00fcr\u00fcm kontrol\u00fc i\u00e7in Git ve GitHub gibi platformlar\u0131 kullanmak, kod de\u011fi\u015fikliklerini takip etmek, geri almak ve potansiyel olarak projeyi a\u00e7\u0131k kaynak haline getirmek i\u00e7in vazge\u00e7ilmezdir. Bu teknoloji se\u00e7imi ve kurulum s\u00fcreci, projenin sa\u011flam bir temele oturmas\u0131n\u0131 sa\u011flayarak, gelecekteki geli\u015ftirmeler i\u00e7in esnek bir zemin haz\u0131rlam\u0131\u015ft\u0131r.<\/p>\n<p>\u00d6rne\u011fin, veritaban\u0131 dosyas\u0131n\u0131 \u015fifrelemek yerine, veritaban\u0131ndaki her bir kayd\u0131 ayr\u0131 ayr\u0131 \u015fifrelemek daha esnek bir yakla\u015f\u0131m olabilir. Bu, veritaban\u0131 dosyas\u0131n\u0131n kendisinin ele ge\u00e7irilmesi durumunda bile, i\u00e7erisindeki verilere eri\u015filememesini sa\u011flar. Bu t\u00fcr detaylar, g\u00fcvenlik mimarisinin ne kadar ince d\u00fc\u015f\u00fcn\u00fclm\u00fc\u015f olmas\u0131 gerekti\u011fini g\u00f6sterir.<\/p>\n<h2>\u015eifre \u00dcretme ve Depolama Mekanizmalar\u0131n\u0131n Geli\u015ftirilmesi<\/h2>\n<p>\u015eifre y\u00f6neticisinin kalbi, \u015f\u00fcphesiz g\u00fc\u00e7l\u00fc ve rastgele \u015fifreler \u00fcretme yetene\u011fidir. Mevcut \u00e7\u00f6z\u00fcmler genellikle \u00f6nceden tan\u0131mlanm\u0131\u015f \u015fablonlar veya karma\u015f\u0131kl\u0131k seviyeleri sunar. Ancak, kendi y\u00f6neticimizi geli\u015ftirirken, bu s\u00fcreci daha da \u00f6zelle\u015ftirebilir ve daha g\u00fcvenli hale getirebiliriz. G\u00fc\u00e7l\u00fc \u015fifreler \u00fcretmenin temelinde, rastgelelik yatar. Kullan\u0131lacak karakter setleri (k\u00fc\u00e7\u00fck harfler, b\u00fcy\u00fck harfler, rakamlar, semboller) ve \u015fifre uzunlu\u011fu gibi parametreler, kullan\u0131c\u0131 taraf\u0131ndan ayarlanabilir olmal\u0131d\u0131r. Bu, rastgele say\u0131 \u00fcrete\u00e7lerinin (Random Number Generators &#8211; RNG) do\u011fru ve g\u00fcvenli bir \u015fekilde kullan\u0131lmas\u0131yla sa\u011flan\u0131r. Kriptografik olarak g\u00fcvenli rastgele say\u0131 \u00fcrete\u00e7leri (Cryptographically Secure Pseudo-Random Number Generators &#8211; CSPRNG) kullanmak, tahmin edilebilirli\u011fi ortadan kald\u0131rmak i\u00e7in kritik \u00f6neme sahiptir. JavaScript&#8217;te <code>crypto.getRandomValues()<\/code> gibi fonksiyonlar bu ama\u00e7la kullan\u0131labilir.<\/p>\n<p>\u015eifreler \u00fcretildikten sonraki ad\u0131m, bunlar\u0131 g\u00fcvenli bir \u015fekilde depolamakt\u0131r. Daha \u00f6nce de belirtti\u011fimiz gibi, veritaban\u0131 \u015fifreleme en \u00f6nemli g\u00fcvenlik katmanlar\u0131ndan biridir. Veritaban\u0131na yaz\u0131lacak her bir \u015fifre, ana \u015fifreye dayal\u0131 olarak t\u00fcretilen bir anahtar ile \u015fifrelenmelidir. Bu anahtar\u0131n t\u00fcretilmesinde PBKDF2 (Password-Based Key Derivation Function 2) veya Argon2 gibi g\u00fc\u00e7l\u00fc anahtar t\u00fcretme fonksiyonlar\u0131 kullan\u0131lmal\u0131d\u0131r. Bu fonksiyonlar, kaba kuvvet (brute-force) sald\u0131r\u0131lar\u0131na kar\u015f\u0131 daha diren\u00e7li olmalar\u0131n\u0131 sa\u011flar. Her bir \u015fifre i\u00e7in ayr\u0131 bir \u015fifreleme anahtar\u0131 \u00fcretmek yerine, t\u00fcm verileri \u015fifrelemek i\u00e7in tek bir anahtar kullanmak ve bu anahtar\u0131 ana \u015fifreden t\u00fcretmek daha yayg\u0131n bir yakla\u015f\u0131md\u0131r. Bu anahtar, yaln\u0131zca kullan\u0131c\u0131 ana \u015fifresini girdi\u011finde bellekte olu\u015fturulmal\u0131 ve i\u015fi bitti\u011finde bellekten temizlenmelidir.<\/p>\n<p>Depolama yap\u0131s\u0131 olarak, her bir kay\u0131t i\u00e7in \u015fu bilgileri saklamak mant\u0131kl\u0131 olacakt\u0131r: Servis ad\u0131 (\u00f6rne\u011fin, &#8220;Google&#8221;, &#8220;Facebook&#8221;), kullan\u0131c\u0131 ad\u0131 (veya e-posta), \u015fifrelenmi\u015f \u015fifre, \u015fifre olu\u015fturulma tarihi, son kullan\u0131m tarihi ve iste\u011fe ba\u011fl\u0131 olarak ek notlar. Bu veriler, se\u00e7ti\u011fimiz veritaban\u0131 (\u00f6rne\u011fin SQLite) i\u00e7erisinde saklanacakt\u0131r. Veritaban\u0131 dosyas\u0131n\u0131n kendisi de, e\u011fer m\u00fcmk\u00fcnse, ek bir \u015fifreleme katman\u0131yla korunabilir. \u00d6rne\u011fin, veritaban\u0131 dosyas\u0131 diskte iken, dosya sistemi d\u00fczeyinde \u015fifreleme veya daha geli\u015fmi\u015f bir y\u00f6ntem olarak, veritaban\u0131 i\u00e7eri\u011fini bir \u015fifreleme k\u00fct\u00fcphanesi ile \u015fifreleyip ham veri olarak saklamak d\u00fc\u015f\u00fcn\u00fclebilir. Ancak, bu, her okuma ve yazma i\u015fleminde ek \u015fifreleme\/\u015fifre \u00e7\u00f6zme ad\u0131mlar\u0131 gerektirecektir. Bu nedenle, veritaban\u0131 i\u00e7indeki hassas alanlar\u0131 \u015fifrelemek genellikle daha pratik bir yakla\u015f\u0131md\u0131r.<\/p>\n<p>\u00d6rnek bir JavaScript kodu blo\u011fu ile \u015fifre \u00fcretme ve \u015fifreleme mant\u0131\u011f\u0131n\u0131 basitle\u015ftirilmi\u015f bir \u015fekilde g\u00f6sterebiliriz:<\/p>\n<div class=\"code-container\">\n<pre><code>\nasync function generateSecurePassword(length = 16) {\n  const charset = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+\";\n  let password = '';\n  const randomValues = new Uint32Array(length);\n  crypto.getRandomValues(randomValues);\n\n  for (let i = 0; i < length; i++) {\n    password += charset[randomValues[i] % charset.length];\n  }\n  return password;\n}\n\nasync function encryptData(data, key) {\n  const iv = crypto.getRandomValues(new Uint8Array(12)); \/\/ Initialization Vector\n  const algorithm = { name: 'AES-GCM', iv: iv };\n  const encodedData = new TextEncoder().encode(data);\n  const cryptoKey = await crypto.subtle.importKey('raw', key, algorithm, false, ['encrypt']);\n  const encrypted = await crypto.subtle.encrypt(algorithm, cryptoKey, encodedData);\n  return { iv: iv, encryptedData: encrypted };\n}\n\n\/\/ Kullan\u0131m \u00f6rne\u011fi:\n\/\/ const masterKey = await deriveKeyFromMasterPassword(\"mySuperSecretMasterPassword\"); \/\/ Anahtar t\u00fcretme fonksiyonu\n\/\/ const newPassword = await generateSecurePassword();\n\/\/ const encryptedPassword = await encryptData(newPassword, masterKey);\n\/\/ Veritaban\u0131na kaydedilir: { service: \"Example\", username: \"user@example.com\", encryptedPassword: encryptedPassword.encryptedData, iv: encryptedPassword.iv }\n      <\/code><\/pre>\n<\/p><\/div>\n<p>Bu kod blo\u011fu, rastgele bir \u015fifre \u00fcretme ve AES-GCM algoritmas\u0131 ile \u015fifreleme i\u015flemini g\u00f6stermektedir. Ger\u00e7ek bir uygulamada, anahtar t\u00fcretme ve \u015fifre \u00e7\u00f6zme gibi ek fonksiyonlar da bulunacakt\u0131r.<\/p>\n<h2>Kullan\u0131c\u0131 Aray\u00fcz\u00fc ve Kullan\u0131c\u0131 Deneyimi (UI\/UX) Tasar\u0131m\u0131<\/h2>\n<p>Teknik olarak ne kadar sa\u011flam bir altyap\u0131 kurarsak kural\u0131m, bir \u015fifre y\u00f6neticisinin ba\u015far\u0131s\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kullan\u0131c\u0131 aray\u00fcz\u00fc (UI) ve kullan\u0131c\u0131 deneyimi (UX) \u00fczerine kuruludur. Kullan\u0131c\u0131lar, karma\u015f\u0131k ve kullan\u0131m\u0131 zor bir ara\u00e7tan ka\u00e7\u0131n\u0131rlar. Bu nedenle, \u015fifre y\u00f6neticimin tasar\u0131m\u0131nda, sadelik, sezgisellik ve verimlilik \u00f6n planda tutuldu. Hedefim, kullan\u0131c\u0131lar\u0131n \u015fifrelerini kolayca ekleyebilmeleri, d\u00fczenleyebilmeleri, arayabilmeleri ve g\u00fcvenli bir \u015fekilde kopyalayabilmeleriydi.<\/p>\n<p>Masa\u00fcst\u00fc uygulamas\u0131 i\u00e7in Electron kullan\u0131ld\u0131\u011f\u0131ndan, HTML, CSS ve JavaScript ile modern ve duyarl\u0131 (responsive) bir aray\u00fcz tasarlamak m\u00fcmk\u00fcnd\u00fc. Aray\u00fcz, temel olarak \u015fu b\u00f6l\u00fcmlerden olu\u015fuyor: Bir kenar \u00e7ubu\u011fu (sidebar) veya liste g\u00f6r\u00fcn\u00fcm\u00fc, mevcut t\u00fcm giri\u015fleri (servisler, kullan\u0131c\u0131 adlar\u0131, \u015fifreler) g\u00f6r\u00fcnt\u00fcler. Her bir giri\u015f, servis ad\u0131, kullan\u0131c\u0131 ad\u0131 ve \u015fifre alan\u0131n\u0131 i\u00e7erir. \u015eifre alanlar\u0131 varsay\u0131lan olarak gizlenir ve kullan\u0131c\u0131 \"g\u00f6ster\" d\u00fc\u011fmesine t\u0131klad\u0131\u011f\u0131nda g\u00f6r\u00fcn\u00fcr hale gelir. Bu, \u00f6zellikle halka a\u00e7\u0131k alanlarda \u00e7al\u0131\u015f\u0131rken veya ba\u015fkalar\u0131n\u0131n ekran\u0131n\u0131z\u0131 g\u00f6rme ihtimali oldu\u011funda \u00f6nemli bir gizlilik \u00f6zelli\u011fidir.<\/p>\n<p>Yeni bir \u015fifre ekleme s\u00fcreci, basit bir form arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. Kullan\u0131c\u0131dan servis ad\u0131, kullan\u0131c\u0131 ad\u0131 ve iste\u011fe ba\u011fl\u0131 olarak \u015fifre bilgileri istenir. E\u011fer kullan\u0131c\u0131 kendi \u015fifresini girmek istemiyorsa, uygulama i\u00e7erisinde g\u00fc\u00e7l\u00fc bir \u015fifre \u00fcreteci devreye girer. Bu \u00fcrete\u00e7, kullan\u0131c\u0131n\u0131n belirledi\u011fi karma\u015f\u0131kl\u0131k seviyesine (uzunluk, rakam, sembol kullan\u0131m\u0131 vb.) g\u00f6re rastgele \u015fifreler olu\u015fturur. \u015eifreler, otomatik olarak g\u00fcvenli bir \u015fekilde \u015fifrelenerek veritaban\u0131na kaydedilir.<\/p>\n<p>Arama fonksiyonu, kullan\u0131c\u0131lar\u0131n binlerce \u015fifre aras\u0131ndan istedikleri kayd\u0131 saniyeler i\u00e7inde bulmalar\u0131n\u0131 sa\u011flamal\u0131d\u0131r. Etkili bir arama algoritmas\u0131 (\u00f6rne\u011fin, metin tabanl\u0131 arama) ve h\u0131zl\u0131 indeksleme, bu i\u015flevi sorunsuz hale getirir. Kullan\u0131c\u0131lar, servis ad\u0131na, kullan\u0131c\u0131 ad\u0131na veya hatta notlar b\u00f6l\u00fcm\u00fcne g\u00f6re arama yapabilmelidir. Bir kayda t\u0131kland\u0131\u011f\u0131nda, detaylar g\u00f6r\u00fcnt\u00fclenir ve kullan\u0131c\u0131lar \u015fifreyi panoya kopyalama, web sitesine gitme veya kayd\u0131 d\u00fczenleme gibi eylemleri ger\u00e7ekle\u015ftirebilir.<\/p>\n<p>G\u00fcvenlik ba\u011flam\u0131nda, kullan\u0131c\u0131 deneyimi de \u00f6nemlidir. Uygulama ba\u015flat\u0131ld\u0131\u011f\u0131nda, kullan\u0131c\u0131dan ana \u015fifre istenir. Ana \u015fifre do\u011fru girildi\u011finde, t\u00fcm \u015fifreler bellekte \u00e7\u00f6z\u00fcl\u00fcr ve kullan\u0131ma haz\u0131r hale gelir. Belirli bir s\u00fcre i\u015flem yap\u0131lmad\u0131\u011f\u0131nda, g\u00fcvenlik amac\u0131yla uygulama otomatik olarak kilitlenmeli ve tekrar ana \u015fifre istenmelidir. Bu \"otomatik kilitleme\" s\u00fcresi, kullan\u0131c\u0131 taraf\u0131ndan ayarlanabilir olmal\u0131d\u0131r. Ayr\u0131ca, \u015fifrelerin panoya kopyalanmas\u0131 sonras\u0131nda, k\u0131sa bir s\u00fcre sonra panonun temizlenmesi de ek bir g\u00fcvenlik \u00f6nlemidir. Bu t\u00fcr k\u00fc\u00e7\u00fck ama etkili UI\/UX detaylar\u0131, kullan\u0131c\u0131n\u0131n hem rahat etmesini hem de g\u00fcvende hissetmesini sa\u011flar.<\/p>\n<p>Ger\u00e7ek d\u00fcnya senaryosu olarak, bir kullan\u0131c\u0131n\u0131n i\u015f yerinde yo\u011fun bir g\u00fcn ge\u00e7irdi\u011fini d\u00fc\u015f\u00fcnelim. Farkl\u0131 projeler i\u00e7in bir\u00e7ok farkl\u0131 web uygulamas\u0131na ve servise giri\u015f yapmas\u0131 gerekiyor. Kendi \u015fifre y\u00f6neticisi sayesinde, her seferinde karma\u015f\u0131k \u015fifreleri hat\u0131rlamak yerine, sadece ana \u015fifresini bir kez girerek t\u00fcm bilgilere an\u0131nda eri\u015febiliyor. Servis ad\u0131n\u0131 yazd\u0131\u011f\u0131nda ilgili kay\u0131t hemen beliriyor, \u015fifreyi tek t\u0131kla panoya kopyalay\u0131p ilgili alana yap\u0131\u015ft\u0131rabiliyor. Bu, hem zamandan tasarruf sa\u011fl\u0131yor hem de hata yapma olas\u0131l\u0131\u011f\u0131n\u0131 azalt\u0131yor.<\/p>\n<h2>Vaka Analizi: K\u00fc\u00e7\u00fck Bir E-Ticaret Sitesi \u0130\u00e7in G\u00fcvenlik \u00c7\u00f6z\u00fcm\u00fc<\/h2>\n<p>K\u00fc\u00e7\u00fck bir e-ticaret sitesi i\u015fleten Ay\u015fe Han\u0131m'\u0131n hikayesini ele alal\u0131m. Ay\u015fe Han\u0131m, hem kendi e-ticaret sitesinin y\u00f6netici paneline, hem bankac\u0131l\u0131k i\u015flemlerine, hem sosyal medya hesaplar\u0131na, hem de tedarik\u00e7ileriyle olan ileti\u015fim platformlar\u0131na eri\u015fmek i\u00e7in bir\u00e7ok farkl\u0131 \u015fifre kullan\u0131yor. Ba\u015flang\u0131\u00e7ta t\u00fcm \u015fifrelerini tek bir basit \u015fifreyle y\u00f6netmeye \u00e7al\u0131\u015fm\u0131\u015f, ancak bir s\u00fcre sonra bu \u015fifrenin de g\u00fcvenli olmad\u0131\u011f\u0131n\u0131 fark etmi\u015f. Ard\u0131ndan, yayg\u0131n bir \u015fifre y\u00f6neticisi kullanmaya ba\u015flam\u0131\u015f. Ancak, kulland\u0131\u011f\u0131 \u015fifre y\u00f6neticisinin \u00fccretsiz s\u00fcr\u00fcm\u00fcnde baz\u0131 k\u0131s\u0131tlamalar varm\u0131\u015f ve s\u00fcrekli reklamlarla kar\u015f\u0131la\u015fmak onu rahats\u0131z ediyormu\u015f. Ayr\u0131ca, \u015fifrelerinin bulutta saklanmas\u0131 konusunda da tam olarak emin olam\u0131yormu\u015f.<\/p>\n<p>Bu noktada, Ay\u015fe Han\u0131m kendi basit \u015fifre y\u00f6neticisini geli\u015ftirmeye karar vermi\u015f. Teknik bilgisi \u00e7ok ileri d\u00fczeyde olmasa da, ad\u0131m ad\u0131m ilerleyerek ve \u00e7evrimi\u00e7i kaynaklardan faydalanarak temel bir \u00e7\u00f6z\u00fcm olu\u015fturmu\u015f. \u0130lk olarak, Electron ile basit bir masa\u00fcst\u00fc uygulamas\u0131 geli\u015ftirmi\u015f. Veritaban\u0131 olarak SQLite kullanm\u0131\u015f ve t\u00fcm hassas bilgileri, ana \u015fifresinden t\u00fcretti\u011fi bir anahtarla AES-256 kullanarak \u015fifrelemi\u015f. Uygulama, kullan\u0131c\u0131lar\u0131n servis ad\u0131n\u0131, kullan\u0131c\u0131 ad\u0131n\u0131 ve \u015fifresini girebilece\u011fi bir form sunuyormu\u015f. E\u011fer kullan\u0131c\u0131 kendi \u015fifresini \u00fcretmek isterse, uygulama i\u00e7erisindeki basit bir rastgele \u015fifre \u00fcreteci devreye giriyormu\u015f. \u015eifreler, veritaban\u0131na kaydedilirken otomatik olarak \u015fifreleniyormu\u015f.<\/p>\n<p>Ay\u015fe Han\u0131m'\u0131n geli\u015ftirdi\u011fi bu \u00e7\u00f6z\u00fcm, onun i\u00e7in m\u00fckemmel bir ba\u015flang\u0131\u00e7 olmu\u015f. Art\u0131k t\u00fcm \u015fifreleri tek bir yerde, kendi kontrol\u00fcnde ve \u015fifrelenmi\u015f bir \u015fekilde saklan\u0131yormu\u015f. Uygulama, ana \u015fifresi girilmeden \u00e7al\u0131\u015fmad\u0131\u011f\u0131 i\u00e7in g\u00fcvenli bir eri\u015fim sa\u011fl\u0131yormu\u015f. Ayr\u0131ca, \u015fifreleri panoya kopyalama \u00f6zelli\u011fi sayesinde, web sitelerine giri\u015f yapmak \u00e7ok daha kolay hale gelmi\u015f. Bu vaka analizi, teknik bilgisi s\u0131n\u0131rl\u0131 olan bir kullan\u0131c\u0131n\u0131n bile, temel prensipleri anlayarak ve do\u011fru ara\u00e7lar\u0131 se\u00e7erek, kendi ihtiya\u00e7lar\u0131na uygun g\u00fcvenli bir \u015fifre \u00e7\u00f6z\u00fcm\u00fc olu\u015fturabilece\u011fini g\u00f6stermektedir. Bu, se\u00e7ici kullan\u0131c\u0131n\u0131n motivasyonunu ve kendi \u00e7\u00f6z\u00fcmlerini \u00fcretme g\u00fcc\u00fcn\u00fc vurgulamaktad\u0131r.<\/p>\n<h2>\u0130leri D\u00fczey \u00d6zellikler ve Gelecek Geli\u015ftirmeler<\/h2>\n<p>Temel bir \u015fifre y\u00f6neticisi geli\u015ftirdikten sonra, s\u0131ra daha ileri d\u00fczey \u00f6zellikler eklemeye gelir. Bu, hem uygulaman\u0131n i\u015flevselli\u011fini art\u0131r\u0131r hem de kullan\u0131c\u0131lar\u0131n daha karma\u015f\u0131k ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lar. Bir sonraki ad\u0131m olarak, taray\u0131c\u0131 entegrasyonu (browser integration) d\u00fc\u015f\u00fcn\u00fclebilir. Bu, kullan\u0131c\u0131lar\u0131n web sitelerindeyken \u015fifrelerinin otomatik olarak doldurulmas\u0131n\u0131 (auto-fill) sa\u011flar. Electron uygulamas\u0131 ile taray\u0131c\u0131 eklentileri (browser extensions) aras\u0131nda bir ileti\u015fim kurulmas\u0131 gerekir. Bu ileti\u015fim, genellikle yerel bir sunucu veya mesajla\u015fma mekanizmas\u0131 arac\u0131l\u0131\u011f\u0131yla sa\u011flanabilir. Taray\u0131c\u0131 eklentisi, kullan\u0131c\u0131n\u0131n ziyaret etti\u011fi web sitesini alg\u0131lar, \u015fifre y\u00f6neticisi uygulamas\u0131ndan ilgili kay\u0131tlar\u0131 getirir ve doldurma i\u015flemini ger\u00e7ekle\u015ftirir.<\/p>\n<p>Di\u011fer bir \u00f6nemli \u00f6zellik ise, \u015fifrelerin senkronizasyonu. Kullan\u0131c\u0131lar, \u015fifrelerini farkl\u0131 cihazlarda (\u00f6rne\u011fin, masa\u00fcst\u00fc bilgisayar ve diz\u00fcst\u00fc bilgisayar) kullanmak isteyebilirler. Bunun i\u00e7in g\u00fcvenli bir senkronizasyon mekanizmas\u0131 geli\u015ftirmek gerekir. Bu, verilerin u\u00e7tan uca \u015fifrelenerek (end-to-end encryption) bulut tabanl\u0131 bir depolama hizmetine (\u00f6rne\u011fin, kendi sunucunuz veya g\u00fcvenilir bir \u00fc\u00e7\u00fcnc\u00fc parti servis) y\u00fcklenmesiyle ger\u00e7ekle\u015ftirilebilir. Bu senkronizasyon s\u0131ras\u0131nda, \u015fifreler yaln\u0131zca kullan\u0131c\u0131 ana \u015fifresiyle \u00e7\u00f6z\u00fclebilir olmal\u0131d\u0131r. Bu, verilerin bulut sa\u011flay\u0131c\u0131s\u0131 taraf\u0131ndan bile okunamaz olmas\u0131n\u0131 garanti eder.<\/p>\n<p>Ek olarak, g\u00fcvenlik denetimi \u00f6zellikleri (security audit features) de eklenebilir. Bu, mevcut \u015fifrelerin zay\u0131f olup olmad\u0131\u011f\u0131n\u0131, tekrar kullan\u0131l\u0131p kullan\u0131lmad\u0131\u011f\u0131n\u0131 veya veri s\u0131z\u0131nt\u0131lar\u0131nda (data breaches) ortaya \u00e7\u0131k\u0131p \u00e7\u0131kmad\u0131\u011f\u0131n\u0131 kontrol eden bir mod\u00fcl olabilir. Bu t\u00fcr bir denetim, kullan\u0131c\u0131lar\u0131n genel g\u00fcvenlik duru\u015flar\u0131n\u0131 iyile\u015ftirmelerine yard\u0131mc\u0131 olur. Ayr\u0131ca, \u015fifre ge\u00e7mi\u015fi (password history) tutmak da faydal\u0131 olabilir. Bu, bir \u015fifrenin \u00f6nceki s\u00fcr\u00fcmlerini saklayarak, yanl\u0131\u015fl\u0131kla de\u011fi\u015ftirilen veya kaybedilen bir \u015fifrenin geri y\u00fcklenmesine olanak tan\u0131r. G\u00fcvenli bir \u015fekilde saklanan \u015fifre ge\u00e7mi\u015fi, kullan\u0131c\u0131lar i\u00e7in ek bir g\u00fcvence sa\u011flar.<\/p>\n<p>Gelecek geli\u015ftirmeler aras\u0131nda, mobil uygulama deste\u011fi de yer alabilir. Hem iOS hem de Android platformlar\u0131 i\u00e7in yerel uygulamalar geli\u015ftirmek veya React Native gibi \u00e7apraz platform framework'leri kullanmak, kullan\u0131c\u0131lar\u0131n mobil cihazlar\u0131nda da \u015fifre y\u00f6neticilerine eri\u015fmelerini sa\u011flayacakt\u0131r. Ayr\u0131ca, daha geli\u015fmi\u015f kimlik do\u011frulama y\u00f6ntemleri, \u00f6rne\u011fin biyometrik kimlik do\u011frulama (parmak izi tarama veya y\u00fcz tan\u0131ma) deste\u011fi de eklenebilir. Bu, kullan\u0131c\u0131lar\u0131n ana \u015fifrelerini girmek yerine, daha h\u0131zl\u0131 ve kolay bir \u015fekilde uygulamaya eri\u015fmelerini sa\u011flayacakt\u0131r. Son olarak, a\u00e7\u0131k kaynak kodlu bir proje haline getirmek, topluluk katk\u0131lar\u0131n\u0131 te\u015fvik edebilir ve projenin daha da geli\u015ftirilmesine yard\u0131mc\u0131 olabilir.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<ul>\n<li>\n<h3>Kendi \u015fifre y\u00f6neticimi kullanman\u0131n avantajlar\u0131 nelerdir?<\/h3>\n<p>Kendi \u015fifre y\u00f6neticinizi kullanman\u0131n en b\u00fcy\u00fck avantaj\u0131, verileriniz \u00fczerindeki tam kontrol\u00fcn\u00fczd\u00fcr. Verilerinizin nerede sakland\u0131\u011f\u0131n\u0131, nas\u0131l \u015fifrelendi\u011fini ve kimin eri\u015febilece\u011fini siz belirlersiniz. Bu, gizlilik ve g\u00fcvenlik konusunda size daha fazla g\u00fcvence sa\u011flar. Ayr\u0131ca, mevcut \u00e7\u00f6z\u00fcmlerin sunmad\u0131\u011f\u0131 \u00f6zelle\u015ftirme se\u00e7eneklerine sahip olursunuz.<\/p>\n<\/li>\n<li>\n<h3>Kendi \u015fifre y\u00f6neticim ne kadar g\u00fcvenli olur?<\/h3>\n<p>Kendi \u015fifre y\u00f6neticinizin g\u00fcvenli\u011fi, kulland\u0131\u011f\u0131n\u0131z \u015fifreleme algoritmalar\u0131na, anahtar t\u00fcretme y\u00f6ntemlerine ve genel g\u00fcvenlik mimarinize ba\u011fl\u0131d\u0131r. AES-256 gibi g\u00fc\u00e7l\u00fc \u015fifreleme algoritmalar\u0131 ve PBKDF2 veya Argon2 gibi g\u00fcvenli anahtar t\u00fcretme fonksiyonlar\u0131 kullan\u0131larak geli\u015ftirilen bir \u015fifre y\u00f6neticisi, piyasadaki bir\u00e7ok ticari \u00e7\u00f6z\u00fcme e\u015fde\u011fer veya daha g\u00fcvenli olabilir. Ancak, geli\u015ftirme s\u00fcrecindeki hatalar veya eksiklikler g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir.<\/p>\n<\/li>\n<li>\n<h3>Ana \u015fifremi unutursam ne olur?<\/h3>\n<p>Bu, kendi \u015fifre y\u00f6neticinizi geli\u015ftirirken en \u00f6nemli risklerden biridir. E\u011fer ana \u015fifrenizi unutursan\u0131z ve verilerinizi kurtarmak i\u00e7in bir yedek mekanizma (\u00f6rne\u011fin, kurtarma kelimeleri veya \u015fifrelenmi\u015f bir yedek dosya) olu\u015fturmad\u0131ysan\u0131z, \u015fifrelerinize eri\u015fiminiz kal\u0131c\u0131 olarak kaybolabilir. Bu nedenle, ana \u015fifrenizi g\u00fcvenli bir yerde saklamak ve unutmamak hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<\/li>\n<li>\n<h3>Farkl\u0131 cihazlarda nas\u0131l kullanabilirim?<\/h3>\n<p>Farkl\u0131 cihazlarda kullanabilmek i\u00e7in, \u015fifrelerinizi g\u00fcvenli bir \u015fekilde senkronize eden bir mekanizma geli\u015ftirmeniz gerekir. Bu genellikle verilerinizi u\u00e7tan uca \u015fifreleyerek bulut tabanl\u0131 bir depolama hizmetine y\u00fcklemek veya kendi sunucunuzda bir senkronizasyon servisi kurmakla m\u00fcmk\u00fcnd\u00fcr. Alternatif olarak, veritaban\u0131 dosyas\u0131n\u0131 (\u015fifrelenmi\u015f haliyle) manuel olarak cihazlar aras\u0131nda kopyalayabilirsiniz.<\/p>\n<\/li>\n<li>\n<h3>Neden ticari bir \u015fifre y\u00f6neticisi kullanmak yerine kendiminkini geli\u015ftireyim ki?<\/h3>\n<p>Ticari \u015fifre y\u00f6neticileri genellikle kullan\u0131m\u0131 kolay ve kapsaml\u0131 \u00f6zellikler sunar. Ancak, baz\u0131 kullan\u0131c\u0131lar veri gizlili\u011fi, a\u00e7\u0131k kaynak kodlu olma tercihi, \u00f6zelle\u015ftirme esnekli\u011fi veya belirli ticari modellerin (reklamlar, abonelikler) rahats\u0131z edici bulmas\u0131 gibi nedenlerle kendi \u00e7\u00f6z\u00fcmlerini geli\u015ftirmeyi tercih edebilirler. Kendi \u015fifre y\u00f6neticinizi geli\u015ftirmek, dijital g\u00fcvenli\u011finiz \u00fczerinde tam kontrol sahibi olman\u0131z\u0131 sa\u011flar.<\/p>\n<\/li>\n<\/ul>\n<p>#\u015eifreY\u00f6netimi #WebGeli\u015ftirme #G\u00fcvenlik #Kendi\u00c7\u00f6z\u00fcm\u00fcn\u00fcGeli\u015ftir<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/python-password-manager-core-concepts\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/python-password-manager-core-concepts<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kimli\u011fimizin bir uzant\u0131s\u0131 haline gelen hesaplar\u0131m\u0131z ve bu hesaplar\u0131n g\u00fcvenli\u011fi, her zamankinden daha kritik bir \u00f6nem ta\u015f\u0131yor.","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-44921","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kimli\u011fimizin bir uzant\u0131s\u0131 haline gelen hesaplar\u0131m\u0131z ve bu hesaplar\u0131n g\u00fcvenli\u011fi, her zamankinden daha kritik bir \u00f6nem ta\u015f\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-27T06:03:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-27T06:04:12+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu\",\"datePublished\":\"2026-09-27T06:03:34+00:00\",\"dateModified\":\"2026-09-27T06:04:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\"},\"wordCount\":3814,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\",\"name\":\"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-09-27T06:03:34+00:00\",\"dateModified\":\"2026-09-27T06:04:12+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/","og_locale":"tr_TR","og_type":"article","og_title":"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu","og_description":"G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda kimli\u011fimizin bir uzant\u0131s\u0131 haline gelen hesaplar\u0131m\u0131z ve bu hesaplar\u0131n g\u00fcvenli\u011fi, her zamankinden daha kritik bir \u00f6nem ta\u015f\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-09-27T06:03:34+00:00","article_modified_time":"2026-09-27T06:04:12+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu","datePublished":"2026-09-27T06:03:34+00:00","dateModified":"2026-09-27T06:04:12+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/"},"wordCount":3814,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/","url":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/","name":"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-09-27T06:03:34+00:00","dateModified":"2026-09-27T06:04:12+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/secici-kullanici-icin-kendi-sifre-yoneticimi-gelistirme-yolculugu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Se\u00e7ici Kullan\u0131c\u0131 \u0130\u00e7in Kendi \u015eifre Y\u00f6neticimi Geli\u015ftirme Yolculu\u011fu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44921","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=44921"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44921\/revisions"}],"predecessor-version":[{"id":44922,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/44921\/revisions\/44922"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=44921"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=44921"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=44921"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}