{"id":43423,"date":"2026-07-18T09:00:43","date_gmt":"2026-07-18T06:00:43","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/"},"modified":"2026-07-18T09:01:14","modified_gmt":"2026-07-18T06:01:14","slug":"saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/","title":{"rendered":"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu"},"content":{"rendered":"<h2>Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu<\/h2>\n<p>G\u00fcvenli kod yazmak i\u00e7in bir hacker gibi d\u00fc\u015f\u00fcnmek gerekir. Bu rehberde, sald\u0131rganlar\u0131n zafiyetleri nas\u0131l buldu\u011funu ve sistemleri nas\u0131l manip\u00fcle etti\u011fini ke\u015ffedin. Yaz\u0131l\u0131m geli\u015ftiriciler olarak g\u00fcn\u00fcm\u00fcz\u00fcn b\u00fcy\u00fck bir k\u0131sm\u0131n\u0131 yeni \u00f6zellikler (feature) in\u015fa etmek, hatalar\u0131 (bug) ay\u0131klamak ve performans\u0131 optimize etmekle ge\u00e7iriyoruz. Ancak, yazd\u0131\u011f\u0131m\u0131z kodlar\u0131n g\u00fcvenli\u011fini sa\u011flama noktas\u0131na geldi\u011fimizde genellikle savunmac\u0131 bir yakla\u015f\u0131m sergiliyoruz. Peki, in\u015fa etti\u011fimiz bu dijital kaleleri y\u0131kmak isteyenler nas\u0131l d\u00fc\u015f\u00fcn\u00fcyor? Bu sorunun cevab\u0131, g\u00fcvenli yaz\u0131l\u0131m geli\u015ftirme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn en kritik anahtar\u0131d\u0131r.<\/p>\n<p>Sald\u0131rganlar, bir uygulaman\u0131n tasarland\u0131\u011f\u0131 gibi \u00e7al\u0131\u015f\u0131p \u00e7al\u0131\u015fmad\u0131\u011f\u0131yla ilgilenmezler; aksine, uygulaman\u0131n tasarlanmad\u0131\u011f\u0131 \u015fekillerde nas\u0131l \u00e7al\u0131\u015ft\u0131r\u0131labilece\u011fini ararlar. Bir yaz\u0131l\u0131mc\u0131 olarak bu bak\u0131\u015f a\u00e7\u0131s\u0131n\u0131 kazanmak, zafiyetleri hen\u00fcz kodlama a\u015famas\u0131ndayken engellemenizi sa\u011flar. \u00c7\u00fcnk\u00fc g\u00fcvenli\u011fi sonradan eklenen bir yama de\u011fil, yaz\u0131l\u0131m\u0131n temel bir bile\u015feni olarak ele almak zorunday\u0131z. Bu makalede, sald\u0131rganlar\u0131n zihniyetini analiz edecek ve kodunuza onlar\u0131n g\u00f6z\u00fcnden bakmay\u0131 \u00f6\u011freneceksiniz.<\/p>\n<h2>Sald\u0131rganlar\u0131n Zihniyeti ve Ke\u015fif A\u015famas\u0131 Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\n<p>Bir sald\u0131rgan\u0131n ilk ad\u0131m\u0131 asla do\u011frudan sisteme sald\u0131rmak de\u011fildir. \u0130lk olarak, hedef sistem hakk\u0131nda olabildi\u011fince \u00e7ok bilgi toplamaya \u00e7al\u0131\u015f\u0131rlar. Bu a\u015famaya siber g\u00fcvenlik literat\u00fcr\u00fcnde Ke\u015fif (Reconnaissance) ad\u0131 verilir. Sald\u0131rganlar, uygulaman\u0131z\u0131n d\u0131\u015f d\u00fcnyaya a\u00e7\u0131k olan t\u00fcm kap\u0131lar\u0131n\u0131, yani sald\u0131r\u0131 y\u00fczeyini (attack surface) haritaland\u0131r\u0131r. Bu s\u00fcre\u00e7te hem pasif hem de aktif y\u00f6ntemler kullan\u0131rlar.<\/p>\n<p>Pasif ke\u015fif s\u0131ras\u0131nda sald\u0131rganlar do\u011frudan hedef sistemle etkile\u015fime girmezler. \u00d6rne\u011fin, GitHub gibi a\u00e7\u0131k kaynak kod depolar\u0131nda unutulmu\u015f API anahtarlar\u0131n\u0131, e-posta adreslerini veya eski kod bloklar\u0131n\u0131 ararlar. Aktif ke\u015fif a\u015famas\u0131nda ise hedef sisteme istekler g\u00f6ndererek a\u00e7\u0131k portlar\u0131, kullan\u0131lan web sunucusunun versiyonunu ve \u00e7al\u0131\u015fan Framework (yaz\u0131l\u0131m \u00e7er\u00e7evesi) bilgilerini tespit etmeye \u00e7al\u0131\u015f\u0131rlar. Bu bilgiler, sald\u0131rgan\u0131n hangi Exploit (s\u00f6m\u00fcrme kodu) tekni\u011fini kullanaca\u011f\u0131n\u0131 belirlemesine yard\u0131mc\u0131 olur.<\/p>\n<p>A\u015fa\u011f\u0131daki tabloda, bir geli\u015ftiricinin varsay\u0131m\u0131 ile bir sald\u0131rgan\u0131n bu varsay\u0131m\u0131 nas\u0131l manip\u00fcle etti\u011fi aras\u0131ndaki farklar\u0131 g\u00f6rebilirsiniz:<\/p>\n<table>\n<thead>\n<tr>\n<th>Geli\u015ftiricinin Varsay\u0131m\u0131<\/th>\n<th>Sald\u0131rgan\u0131n Yakla\u015f\u0131m\u0131<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>&#8220;Kullan\u0131c\u0131lar form alan\u0131na sadece ge\u00e7erli e-posta adresleri yazacakt\u0131r.&#8221;<\/td>\n<td>&#8220;Bu alana SQL komutlar\u0131 veya zararl\u0131 JavaScript kodlar\u0131 yazarsam ne olur?&#8221;<\/td>\n<\/tr>\n<tr>\n<td>&#8220;API u\u00e7 noktalar\u0131m\u0131z gizli oldu\u011fu i\u00e7in kimse ke\u015ffedemez.&#8221;<\/td>\n<td>&#8220;JavaScript dosyalar\u0131n\u0131 inceleyerek t\u00fcm gizli API yollar\u0131n\u0131 listeleyebilirim.&#8221;<\/td>\n<\/tr>\n<tr>\n<td>&#8220;Kullan\u0131c\u0131 aray\u00fcz\u00fcnde (UI) butonlar\u0131 gizlersem yetkisiz eri\u015fimi engellerim.&#8221;<\/td>\n<td>&#8220;\u0130stekleri do\u011frudan HTTP seviyesinde manip\u00fcle ederek yetkisiz i\u015flem yapabilirim.&#8221;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu nedenle, sald\u0131rganlar\u0131n ilk hedefinin sisteminizin mimarisini anlamak oldu\u011funu asla unutmamal\u0131s\u0131n\u0131z. Onlar i\u00e7in her hata mesaj\u0131, her HTTP ba\u015fl\u0131\u011f\u0131 ve her parametre potansiyel bir ipucudur.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Basit Bir SQL Enjeksiyonu Nas\u0131l Felakete D\u00f6n\u00fc\u015ft\u00fc?<\/h2>\n<p>Gelin, T\u00fcrkiye pazar\u0131nda faaliyet g\u00f6steren yerel bir e-ticaret platformunun ya\u015fad\u0131\u011f\u0131 ger\u00e7ek bir siber sald\u0131r\u0131 senaryosunu inceleyelim. Bu platform, kullan\u0131c\u0131lar\u0131n \u00fcr\u00fcn aramas\u0131 yapabilmesi i\u00e7in basit bir arama \u00e7ubu\u011fu sunuyordu. Geli\u015ftiriciler, kullan\u0131c\u0131lar\u0131n sadece \u00fcr\u00fcn isimleri yazaca\u011f\u0131n\u0131 varsayarak girdi kontrol\u00fc yapmam\u0131\u015ft\u0131. Ancak bir sald\u0131rgan, bu arama kutusunun arkas\u0131ndaki veritaban\u0131 sorgusunu tahmin etmeye \u00e7al\u0131\u015ft\u0131.<\/p>\n<p>Sald\u0131rgan, arama kutusuna normal bir kelime yerine SQL ifadeleri girmeyi denedi. \u0130lk olarak, veritaban\u0131n\u0131n hata verip vermedi\u011fini kontrol etmek i\u00e7in tek t\u0131rnak (<code>'<\/code>) karakterini kulland\u0131. Veritaban\u0131ndan d\u00f6nen detayl\u0131 hata mesaj\u0131, sald\u0131rgana arkada \u00e7al\u0131\u015fan veritaban\u0131 y\u00f6netim sisteminin (DBMS) PostgreSQL oldu\u011funu g\u00f6sterdi. Bu bilgi, sald\u0131rgan\u0131n sonraki ad\u0131mlar\u0131n\u0131 planlamas\u0131 i\u00e7in yeterliydi.<\/p>\n<p>Daha sonra, sald\u0131rgan arama parametresini \u015fu \u015fekilde manip\u00fcle etti: <code>UNION SELECT<\/code> sorgular\u0131 kullanarak veritaban\u0131ndaki kullan\u0131c\u0131 tablolar\u0131n\u0131 hedef ald\u0131. Sonu\u00e7 olarak, \u015firketin t\u00fcm m\u00fc\u015fteri veritaban\u0131, \u015fifrelenmi\u015f parolalar ve e-posta adresleri sald\u0131rgan\u0131n eline ge\u00e7ti. Bu olay, \u015firketin ciddi bir prestij kayb\u0131 ya\u015famas\u0131na ve KVKK (Ki\u015fisel Verileri Koruma Kanunu) kapsam\u0131nda b\u00fcy\u00fck cezalar almas\u0131na neden oldu. Oysa bu felaketi \u00f6nlemek, sadece parametreli sorgular (parameterized queries) kullanmaktan ibaretti.<\/p>\n<h2>Girdi Do\u011frulama Hatalar\u0131 Nas\u0131l S\u00f6m\u00fcr\u00fcl\u00fcr?<\/h2>\n<p>Sald\u0131rganlar\u0131n en s\u0131k kulland\u0131\u011f\u0131 y\u00f6ntemlerden biri, uygulamaya g\u00f6nderilen verileri manip\u00fcle etmektir. E\u011fer uygulaman\u0131z kullan\u0131c\u0131dan gelen her veriye g\u00fcveniyorsa, s\u00f6m\u00fcr\u00fclmeye a\u00e7\u0131k demektir. Bu duruma girdi do\u011frulama (input validation) hatalar\u0131 denir. \u00d6zellikle SQL Injection (SQL Enjeksiyonu) ve XSS (Cross-Site Scripting &#8211; Siteler Aras\u0131 Betik \u00c7al\u0131\u015ft\u0131rma) bu kategoride yer al\u0131r.<\/p>\n<p>\u00d6rne\u011fin, g\u00fcvensiz bir Node.js ve Express kodunu ele alal\u0131m. Bu kodda kullan\u0131c\u0131dan al\u0131nan veri do\u011frudan SQL sorgusuna eklenmektedir:<\/p>\n<div class=\"code-container\">\n<pre><code>\/\/ G\u00dcVENS\u0130Z KOD \u00d6RNE\u011e\u0130\napp.get('\/api\/users', (req, res) => {\n    const userId = req.query.id;\n    const query = <code>SELECT * FROM users WHERE id = ${userId}<\/code>;\n    \n    db.query(query, (err, result) => {\n        if (err) throw err;\n        res.send(result);\n    });\n});<\/code><\/pre>\n<\/div>\n<p>Bu kodda, kullan\u0131c\u0131dan al\u0131nan <code>userId<\/code> parametresi do\u011frudan SQL sorgusuna eklenmektedir. Sald\u0131rgan, <code>id<\/code> de\u011ferini <code>1 OR 1=1<\/code> olarak g\u00f6nderdi\u011finde, sorgu her zaman do\u011fru (true) d\u00f6necek ve t\u00fcm kullan\u0131c\u0131 verileri listelenecektir. Bu durumu engellemek i\u00e7in her zaman parametreli sorgular kullanmal\u0131s\u0131n\u0131z.<\/p>\n<p>\u015eimdi bu zafiyeti nas\u0131l g\u00fcvenli hale getirece\u011fimize bakal\u0131m:<\/p>\n<div class=\"code-container\">\n<pre><code>\/\/ G\u00dcVENL\u0130 KOD \u00d6RNE\u011e\u0130\napp.get('\/api\/users', (req, res) => {\n    const userId = req.query.id;\n    const query = 'SELECT * FROM users WHERE id = ?';\n    \n    db.query(query, [userId], (err, result) => {\n        if (err) throw err;\n        res.send(result);\n    });\n});<\/code><\/pre>\n<\/div>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, parametreli sorgu kullanarak kullan\u0131c\u0131n\u0131n girdisini do\u011frudan SQL komutu olarak \u00e7al\u0131\u015ft\u0131rmak yerine sadece bir veri (data) olarak ele ald\u0131k. Sald\u0131rganlar bu t\u00fcr engellerle kar\u015f\u0131la\u015ft\u0131klar\u0131nda genellikle daha kolay hedeflere y\u00f6nelirler. Bu nedenle, girdi do\u011frulamay\u0131 hem istemci (client) hem de sunucu (server) taraf\u0131nda \u00e7ift katmanl\u0131 olarak uygulamal\u0131s\u0131n\u0131z.<\/p>\n<h2>Mant\u0131ksal Hatalar ve Yetkilendirme Zafiyetleri Nas\u0131l Tespit Edilir?<\/h2>\n<p>Otomatik zafiyet taray\u0131c\u0131lar kod yap\u0131s\u0131 hatalar\u0131n\u0131 bulabilir, ancak i\u015f mant\u0131\u011f\u0131 (business logic) hatalar\u0131n\u0131 tespit edemezler. Sald\u0131rganlar tam da bu noktada devreye girer. Onlar, uygulaman\u0131n ak\u0131\u015f \u015femas\u0131ndaki mant\u0131ksal bo\u015fluklar\u0131 ararlar. Bu t\u00fcr zafiyetlerin en pop\u00fcler olan\u0131 IDOR (Insecure Direct Object Reference &#8211; G\u00fcvensiz Do\u011frudan Nesne Referans\u0131) olarak bilinir.<\/p>\n<p>Bir kullan\u0131c\u0131n\u0131n kendi profil bilgilerini d\u00fczenledi\u011fi veya g\u00f6r\u00fcnt\u00fcledi\u011fi bir API u\u00e7 noktas\u0131n\u0131 (endpoint) d\u00fc\u015f\u00fcnelim. \u0130stek \u015fu \u015fekilde g\u00f6r\u00fcnebilir:<\/p>\n<div class=\"code-container\">\n<pre><code>GET \/api\/users\/profile?id=4502<\/code><\/pre>\n<\/div>\n<p>Bir sald\u0131rgan, bu iste\u011fi yakalayarak <code>id<\/code> de\u011ferini <code>4503<\/code> olarak de\u011fi\u015ftirir. E\u011fer sunucu taraf\u0131nda iste\u011fi yapan kullan\u0131c\u0131n\u0131n oturum bilgisi (session) ile talep edilen <code>id<\/code> de\u011ferinin e\u015fle\u015fip e\u015fle\u015fmedi\u011fi kontrol edilmiyorsa, sald\u0131rgan ba\u015fka bir kullan\u0131c\u0131n\u0131n hassas verilerine eri\u015fmi\u015f olur. Bu durum, tamamen mant\u0131ksal bir yetkilendirme hatas\u0131d\u0131r.<\/p>\n<p>Sald\u0131rganlar bu t\u00fcr a\u00e7\u0131klar\u0131 bulmak i\u00e7in taray\u0131c\u0131 geli\u015ftirici ara\u00e7lar\u0131n\u0131 (developer tools) ve proxy (vekil sunucu) ara\u00e7lar\u0131n\u0131 s\u0131kl\u0131kla kullan\u0131rlar. Bu t\u00fcr mant\u0131ksal hatalar\u0131 \u00f6nlemek i\u00e7in \u015fu kurallara dikkat etmelisiniz:<\/p>\n<ul>\n<li>Asla istemci taraf\u0131ndaki verilere g\u00fcvenmeyin.<\/li>\n<li>Her istekte kullan\u0131c\u0131n\u0131n o i\u015flemi yapmaya yetkisi olup olmad\u0131\u011f\u0131n\u0131 sunucu taraf\u0131nda (backend) do\u011frulay\u0131n.<\/li>\n<li>Ard\u0131\u015f\u0131k tahmin edilebilir ID&#8217;ler (\u00f6rne\u011fin 1, 2, 3) yerine UUID (Universally Unique Identifier &#8211; Evrensel Benzersiz Tan\u0131mlay\u0131c\u0131) kullan\u0131n.<\/li>\n<\/ul>\n<h2>Tehdit Modellemesi (Threat Modeling) G\u00fcvenli Tasar\u0131m \u0130\u00e7in Nas\u0131l Kullan\u0131l\u0131r?<\/h2>\n<p>Sald\u0131rganlar\u0131n \u00f6n\u00fcne ge\u00e7menin en etkili yolu, kod yazmaya ba\u015flamadan \u00f6nce tehdit modellemesi yapmakt\u0131r. Tehdit modellemesi, sisteminizin mimarisini inceleyerek olas\u0131 sald\u0131r\u0131 senaryolar\u0131n\u0131 \u00f6nceden belirleme s\u00fcrecidir. Bu s\u00fcre\u00e7te yayg\u0131n olarak kullan\u0131lan STRIDE metodolojisini uygulayabilirsiniz.<\/p>\n<p>STRIDE metodolojisi, siber tehditleri alt\u0131 ana kategoride ele al\u0131r:<\/p>\n<ol>\n<li><strong>Spoofing (Kimlik Taklidi):<\/strong> Sald\u0131rgan ba\u015fka bir kullan\u0131c\u0131n\u0131n veya sistemin kimli\u011fine b\u00fcr\u00fcnebilir mi? Bunu \u00f6nlemek i\u00e7in g\u00fc\u00e7l\u00fc kimlik do\u011frulama mekanizmalar\u0131 kullanmal\u0131s\u0131n\u0131z.<\/li>\n<li><strong>Tampering (Veri Manip\u00fclasyonu):<\/strong> Sald\u0131rgan verileri yolda veya veritaban\u0131nda de\u011fi\u015ftirebilir mi? Bunu \u00f6nlemek i\u00e7in SSL\/TLS protokolleri ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fc kontrolleri uygulanmal\u0131d\u0131r.<\/li>\n<li><strong>Repudiation (\u0130nkar Edilebilirlik):<\/strong> Sald\u0131rgan yapt\u0131\u011f\u0131 bir i\u015flemi inkar edebilir mi? G\u00fc\u00e7l\u00fc bir loglama (g\u00fcnl\u00fck kayd\u0131) sistemi kurarak t\u00fcm kritik i\u015flemleri kay\u0131t alt\u0131na almal\u0131s\u0131n\u0131z.<\/li>\n<li><strong>Information Disclosure (Bilgi \u0130f\u015fas\u0131):<\/strong> Hassas veriler d\u0131\u015far\u0131 s\u0131zabilir mi? Veritaban\u0131ndaki verileri \u015fifreleyerek ve hata mesajlar\u0131n\u0131 s\u0131n\u0131rland\u0131rarak bu riski azaltabilirsiniz.<\/li>\n<li><strong>Denial of Service (Hizmet Engelleme):<\/strong> Sistem a\u015f\u0131r\u0131 y\u00fck alt\u0131nda \u00e7\u00f6kertilebilir mi? H\u0131z s\u0131n\u0131rlama (rate limiting) uygulayarak sunucunuzu korumal\u0131s\u0131n\u0131z.<\/li>\n<li><strong>Elevation of Privilege (Yetki Y\u00fckseltme):<\/strong> Normal bir kullan\u0131c\u0131 y\u00f6netici yetkileri elde edebilir mi? Rol tabanl\u0131 eri\u015fim kontrol\u00fc (RBAC) kullanarak yetki s\u0131n\u0131rlar\u0131n\u0131 netle\u015ftirmelisiniz.<\/li>\n<\/ol>\n<p>Bu sorular\u0131 tasar\u0131m a\u015famas\u0131nda sormak, sonradan olu\u015facak g\u00fcvenlik maliyetlerini neredeyse s\u0131f\u0131ra indirir. Unutmay\u0131n, kod yaz\u0131ld\u0131ktan sonra g\u00fcvenlik a\u00e7\u0131\u011f\u0131 kapatmak, tasar\u0131m a\u015famas\u0131nda \u00f6nlem almaktan on kat daha maliyetlidir.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular ve G\u00fcvenli Kodlama \u00d6zet Rehberi<\/h2>\n<p>Sald\u0131rganlar\u0131n bak\u0131\u015f a\u00e7\u0131s\u0131n\u0131 anlamak, sadece g\u00fcvenlik uzmanlar\u0131n\u0131n de\u011fil, her modern yaz\u0131l\u0131mc\u0131n\u0131n g\u00f6revidir. G\u00fcvenli kod yazmak, sisteminizin tamamen k\u0131r\u0131lmaz oldu\u011fu anlam\u0131na gelmez; aksine, sald\u0131rgana harcataca\u011f\u0131n\u0131z zaman ve maliyeti art\u0131rarak onlar\u0131 vazge\u00e7irmek anlam\u0131na gelir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<h4>Sadece HTTPS kullanmak uygulamam\u0131 tamamen g\u00fcvenli yapar m\u0131?<\/h4>\n<p>Hay\u0131r, HTTPS sadece istemci ile sunucu aras\u0131ndaki veri trafi\u011fini \u015fifreler. Bu durum, verilerin yolda dinlenmesini (Man-in-the-Middle) engeller ancak uygulaman\u0131z\u0131n i\u00e7indeki SQL Injection veya yetkilendirme hatalar\u0131n\u0131 \u00e7\u00f6zmez.<\/p>\n<h4>Otomatik g\u00fcvenlik tarama ara\u00e7lar\u0131 t\u00fcm a\u00e7\u0131klar\u0131 bulabilir mi?<\/h4>\n<p>Otomatik ara\u00e7lar, bilinen k\u00fct\u00fcphane a\u00e7\u0131klar\u0131n\u0131 ve temel yap\u0131land\u0131rma hatalar\u0131n\u0131 bulmada harikad\u0131r. Ancak, i\u015f mant\u0131\u011f\u0131 (business logic) hatalar\u0131n\u0131 ve karma\u015f\u0131k yetkilendirme zafiyetlerini tespit edemezler. Bu y\u00fczden manuel kod analizi ve s\u0131zma testleri (pentest) her zaman gereklidir.<\/p>\n<h4>SQL Injection hala g\u00fcncel bir tehdit mi?<\/h4>\n<p>Evet, modern ORM (Object-Relational Mapping) ara\u00e7lar\u0131 bu zafiyeti b\u00fcy\u00fck \u00f6l\u00e7\u00fcde engellese de, hala ham (raw) SQL sorgusu yaz\u0131lan eski sistemlerde veya yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f projelerde en s\u0131k kar\u015f\u0131la\u015f\u0131lan kritik a\u00e7\u0131klardan biridir.<\/p>\n<p>#Teknoloji #WebGeli\u015ftirme #SiberG\u00fcvenlik #G\u00fcvenliKodlama<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/sql-injection-prevention-example-python\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/sql-injection-prevention-example-python<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"G\u00fcvenli kod yazmak i\u00e7in bir hacker gibi d\u00fc\u015f\u00fcnmek gerekir. Bu rehberde, sald\u0131rganlar\u0131n zafiyetleri nas\u0131l buldu\u011funu ve sistemleri nas\u0131l manip\u00fcle etti\u011fini ke\u015ffedin.","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-43423","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>Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu - 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\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu\" \/>\n<meta property=\"og:description\" content=\"G\u00fcvenli kod yazmak i\u00e7in bir hacker gibi d\u00fc\u015f\u00fcnmek gerekir. Bu rehberde, sald\u0131rganlar\u0131n zafiyetleri nas\u0131l buldu\u011funu ve sistemleri nas\u0131l manip\u00fcle etti\u011fini ke\u015ffedin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-18T06:00:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-18T06:01:14+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=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu\",\"datePublished\":\"2026-07-18T06:00:43+00:00\",\"dateModified\":\"2026-07-18T06:01:14+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\"},\"wordCount\":1816,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\",\"name\":\"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-07-18T06:00:43+00:00\",\"dateModified\":\"2026-07-18T06:01:14+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu\"}]},{\"@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":"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu - 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\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/","og_locale":"tr_TR","og_type":"article","og_title":"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu","og_description":"G\u00fcvenli kod yazmak i\u00e7in bir hacker gibi d\u00fc\u015f\u00fcnmek gerekir. Bu rehberde, sald\u0131rganlar\u0131n zafiyetleri nas\u0131l buldu\u011funu ve sistemleri nas\u0131l manip\u00fcle etti\u011fini ke\u015ffedin.","og_url":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-07-18T06:00:43+00:00","article_modified_time":"2026-07-18T06:01:14+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu","datePublished":"2026-07-18T06:00:43+00:00","dateModified":"2026-07-18T06:01:14+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/"},"wordCount":1816,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/","url":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/","name":"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-07-18T06:00:43+00:00","dateModified":"2026-07-18T06:01:14+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/saldirgan-gozuyle-guvenlik-yazilimci-kilavuzu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Sald\u0131rgan G\u00f6z\u00fcyle G\u00fcvenlik: Yaz\u0131l\u0131mc\u0131 K\u0131lavuzu"}]},{"@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\/43423","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=43423"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43423\/revisions"}],"predecessor-version":[{"id":43424,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43423\/revisions\/43424"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}