{"id":35958,"date":"2025-12-06T04:31:03","date_gmt":"2025-12-06T01:31:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/"},"modified":"2025-12-06T04:31:03","modified_gmt":"2025-12-06T01:31:03","slug":"python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/","title":{"rendered":"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin"},"content":{"rendered":"<p><body><\/p>\n<p>Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit&#8217;i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: G\u00fcvenlik, geli\u015ftirme s\u00fcrecinin sonuna b\u0131rak\u0131lacak bir i\u015f de\u011fildir. &#8220;Shift-Left Security&#8221; prensibiyle, g\u00fcvenlik testlerini m\u00fcmk\u00fcn olan en erken a\u015famada yaparak maliyetleri ve riskleri \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilirsiniz.\n    <\/div>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, yaz\u0131l\u0131m uygulamalar\u0131 hayat\u0131m\u0131z\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131 haline geldi. \u00d6zellikle Python, h\u0131zl\u0131 geli\u015ftirme yetenekleri, zengin k\u00fct\u00fcphane ekosistemi ve okunabilir s\u00f6zdizimi sayesinde web uygulamalar\u0131ndan veri bilimine, yapay zekadan otomasyona kadar bir\u00e7ok alanda tercih ediliyor. Ancak bu pop\u00fclerlik, beraberinde ciddi g\u00fcvenlik risklerini de getiriyor. Bir Python uygulamas\u0131ndaki k\u00fc\u00e7\u00fck bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bile, veri s\u0131z\u0131nt\u0131lar\u0131na, yetkisiz eri\u015fime, hizmet kesintilerine veya itibar kayb\u0131na yol a\u00e7abilecek felaket senaryolar\u0131na d\u00f6n\u00fc\u015febilir.<\/p>\n<p>Geli\u015ftiriciler olarak, kodumuzun i\u015flevselli\u011fi ve performans\u0131 kadar g\u00fcvenli\u011fi de bizim sorumlulu\u011fumuzdad\u0131r. Geleneksel yakla\u015f\u0131mlarda g\u00fcvenlik testleri genellikle geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn sonuna b\u0131rak\u0131l\u0131rd\u0131. Ancak bu &#8220;test et ve d\u00fczelt&#8221; modeli, kritik g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n \u00fcretime kadar ilerlemesine ve d\u00fczeltme maliyetlerinin katlanarak artmas\u0131na neden oluyordu. Bu nedenle, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 m\u00fcmk\u00fcn olan en erken a\u015famada, yani kod yaz\u0131l\u0131rken veya kod havuzuna commit edilirken tespit etme ihtiyac\u0131 do\u011fmu\u015ftur. \u0130\u015fte tam da bu noktada Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131 devreye girer. SAST, kodunuzu \u00e7al\u0131\u015ft\u0131rmadan, statik olarak analiz ederek potansiyel g\u00fcvenlik zay\u0131fl\u0131klar\u0131n\u0131 ve kodlama hatalar\u0131n\u0131 bulmaya odaklan\u0131r. Bu sayede, k\u00f6t\u00fc niyetli sald\u0131rganlar bu zay\u0131fl\u0131klar\u0131 s\u00f6m\u00fcrmeden \u00f6nce \u00f6nlemler alabilirsiniz. \u00d6zellikle a\u00e7\u0131k kaynakl\u0131 k\u00fct\u00fcphanelerin ve \u00fc\u00e7\u00fcnc\u00fc taraf bile\u015fenlerin yo\u011fun kullan\u0131m\u0131, bir uygulaman\u0131n sald\u0131r\u0131 y\u00fczeyini geni\u015fletti\u011fi i\u00e7in, kendi yazd\u0131\u011f\u0131n\u0131z kodun yan\u0131 s\u0131ra ba\u011f\u0131ml\u0131l\u0131klar\u0131n da g\u00fcvenli\u011fini s\u00fcrekli olarak kontrol etmek hayati \u00f6nem ta\u015f\u0131r. \u00d6rnek vermek gerekirse, pop\u00fcler bir Python web \u00e7er\u00e7evesinde (Flask, Django) yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir oturum y\u00f6netimi veya kimlik do\u011frulama mekanizmas\u0131, uygulaman\u0131z\u0131 kolayca ele ge\u00e7irilebilir hale getirebilir. Veya hassas verileri i\u015fleyen bir betikte (script) giri\u015f do\u011frulamas\u0131 eksikli\u011fi, SQL enjeksiyonu veya komut enjeksiyonu gibi risklere kap\u0131 aralayabilir. Bu t\u00fcr sorunlar\u0131 elle tespit etmek zaman al\u0131c\u0131 ve hataya a\u00e7\u0131k bir s\u00fcre\u00e7tir, bu y\u00fczden otomatik ara\u00e7lar paha bi\u00e7ilmez bir yard\u0131mc\u0131d\u0131r.<\/p>\n<p>Bu makalede odaklanaca\u011f\u0131m\u0131z Bandit, Python kod taban\u0131n\u0131zdaki bilinen g\u00fcvenlik sorunlar\u0131n\u0131 proaktif olarak tan\u0131mlamak i\u00e7in tasarlanm\u0131\u015f, g\u00fc\u00e7l\u00fc ve kullan\u0131m\u0131 kolay bir SAST arac\u0131d\u0131r. Bandit&#8217;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131, onu projenize nas\u0131l entegre edebilece\u011finizi ve elde etti\u011finiz raporlar\u0131 nas\u0131l yorumlay\u0131p g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 giderebilece\u011finizi ad\u0131m ad\u0131m inceleyece\u011fiz. Amac\u0131m\u0131z, Python geli\u015ftiricilerinin g\u00fcvenlik konusunda daha bilin\u00e7li olmalar\u0131na yard\u0131mc\u0131 olmak ve uygulamalar\u0131n\u0131 k\u00f6t\u00fc niyetli akt\u00f6rlere kar\u015f\u0131 daha diren\u00e7li hale getirmektir. Bu nedenle, gelin SAST&#8217;\u0131n temellerini ve Bandit&#8217;in sundu\u011fu yetenekleri daha yak\u0131ndan inceleyelim.<\/p>\n<h2>SAST Nedir ve Bandit Bu S\u00fcre\u00e7te Nas\u0131l Bir Rol Oynar?<\/h2>\n<p>Statik Uygulama G\u00fcvenlik Testi (SAST), yaz\u0131l\u0131m geli\u015ftirme ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn (SDLC) erken a\u015famalar\u0131nda g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tespit etmek i\u00e7in kaynak kodunu, bayt kodunu veya ikili kodu analiz eden bir uygulama g\u00fcvenlik testi y\u00f6ntemidir. En temel fark\u0131, uygulaman\u0131n \u00e7al\u0131\u015f\u0131r durumda olmas\u0131na ihtiya\u00e7 duymamas\u0131d\u0131r. Kod taban\u0131n\u0131, \u00e7al\u0131\u015ft\u0131r\u0131labilir bir uygulama olu\u015fturmadan \u00f6nce inceler. Bu sayede, g\u00fcvenlik sorunlar\u0131 daha geli\u015ftirme a\u015famas\u0131ndayken, yani d\u00fczeltilmesi en ucuz ve en kolay oldu\u011fu zamanda tespit edilebilir.<\/p>\n<h3>SAST Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>SAST ara\u00e7lar\u0131, \u00e7e\u015fitli algoritmalar ve kural setleri kullanarak kodu tarar. Bu s\u00fcre\u00e7 genellikle a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ol>\n<li><strong>Kod Ayr\u0131\u015ft\u0131rma (Parsing):<\/strong> Ara\u00e7, kaynak kodu anlaml\u0131 bir yap\u0131ya, genellikle bir Abstract Syntax Tree (AST) veya Control Flow Graph (CFG) d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Bu yap\u0131lar, kodun mant\u0131ksal ak\u0131\u015f\u0131n\u0131 ve bile\u015fenlerini temsil eder.<\/li>\n<li><strong>Analiz (Analysis):<\/strong> Olu\u015fturulan yap\u0131lar \u00fczerinde, \u00f6nceden tan\u0131mlanm\u0131\u015f g\u00fcvenlik kurallar\u0131 ve desenleri uygulan\u0131r. Bu kurallar, bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 (\u00f6rne\u011fin, SQL enjeksiyonu, XSS, sert kodlanm\u0131\u015f parolalar, g\u00fcvensiz seri hale getirme) aramaya odaklan\u0131r.<\/li>\n<li><strong>Raporlama (Reporting):<\/strong> Analiz sonucunda bulunan potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131, genellikle \u00f6nem derecesi (severity) ve g\u00fcvenilirlik (confidence) d\u00fczeyleri ile birlikte detayl\u0131 bir rapor halinde sunulur.<\/li>\n<\/ol>\n<p>SAST&#8217;\u0131n en b\u00fcy\u00fck avantajlar\u0131ndan biri, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 &#8220;geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn soluna kayd\u0131rma&#8221; (shift-left security) yakla\u015f\u0131m\u0131n\u0131 desteklemesidir. Yani, g\u00fcvenlik testleri ne kadar erken ba\u015flarsa, g\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulma ve d\u00fczeltme maliyetleri o kadar d\u00fc\u015fer. Ayr\u0131ca, SAST ara\u00e7lar\u0131 kodun tamam\u0131n\u0131 veya belirli b\u00f6l\u00fcmlerini kapsayacak \u015fekilde yap\u0131land\u0131r\u0131labilir, bu da geni\u015f bir kapsama alan\u0131 sa\u011flar.<\/p>\n<h3>Bandit&#8217;in Rol\u00fc Nedir?<\/h3>\n<p>Bandit, \u00f6zellikle Python dili i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynakl\u0131 bir SAST arac\u0131d\u0131r. Python kod taban\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tespit etmek i\u00e7in bir dizi \u00f6nceden tan\u0131mlanm\u0131\u015f kural\u0131 ve desenini kullan\u0131r. Bandit, Python kodunu AST&#8217;ye d\u00f6n\u00fc\u015ft\u00fcrerek bu AST \u00fczerinde g\u00fcvenlik kontrolleri yapar. Her bir kural (test), belirli bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 t\u00fcr\u00fcn\u00fc veya k\u00f6t\u00fc kodlama uygulamas\u0131n\u0131 arar. \u00d6rne\u011fin, bir kural sert kodlanm\u0131\u015f parolalar\u0131 ararken, bir di\u011feri <code>subprocess<\/code> mod\u00fcl\u00fcn\u00fcn tehlikeli kullan\u0131mlar\u0131n\u0131 inceleyebilir.<\/p>\n<p>Bandit&#8217;in temel \u00f6zellikleri ve avantajlar\u0131 \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Python Odakl\u0131:<\/strong> Sadece Python kodunu analiz etmek \u00fczere optimize edilmi\u015ftir, bu da y\u00fcksek do\u011fruluk ve d\u00fc\u015f\u00fck yanl\u0131\u015f pozitif oran\u0131 sa\u011flar.<\/li>\n<li><strong>Kural Tabanl\u0131:<\/strong> Bir\u00e7ok yayg\u0131n g\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131 (\u00f6rne\u011fin, SQL enjeksiyonu, XSS, sert kodlanm\u0131\u015f gizli anahtarlar, g\u00fcvensiz \u015fifreleme kullan\u0131mlar\u0131, dosya yolunun manip\u00fclasyonu) tespit eden zengin bir kural setine sahiptir.<\/li>\n<li><strong>H\u0131zl\u0131 ve Verimli:<\/strong> Uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmadan analiz yapt\u0131\u011f\u0131 i\u00e7in h\u0131zl\u0131 sonu\u00e7lar verir. B\u00fcy\u00fck kod tabanlar\u0131nda bile makul s\u00fcrelerde tarama yapabilir.<\/li>\n<li><strong>Entegrasyon Kolayl\u0131\u011f\u0131:<\/strong> Komut sat\u0131r\u0131ndan kolayca \u00e7al\u0131\u015ft\u0131r\u0131labilir ve CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) boru hatlar\u0131na rahatl\u0131kla entegre edilebilir.<\/li>\n<li><strong>\u00c7e\u015fitli Rapor Formatlar\u0131:<\/strong> JSON, XML, HTML, CSV gibi farkl\u0131 formatlarda raporlar \u00fcreterek di\u011fer ara\u00e7larla entegrasyonu kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>\u00d6nem Derecesi ve G\u00fcvenilirlik:<\/strong> Her bulguyu \u00f6nem derecesi (Severity: Y\u00fcksek, Orta, D\u00fc\u015f\u00fck) ve g\u00fcvenilirlik (Confidence: Y\u00fcksek, Orta, D\u00fc\u015f\u00fck) ile etiketleyerek, hangi sorunlara \u00f6ncelik vermeniz gerekti\u011fini belirtir.<\/li>\n<\/ul>\n<p>Bandit, geli\u015ftiricilerin kod yaz\u0131m s\u00fcrecinde g\u00fcvenlik konusunda daha bilin\u00e7li kararlar almas\u0131na yard\u0131mc\u0131 olur. Bir geli\u015ftirici, yazd\u0131\u011f\u0131 bir kod par\u00e7as\u0131nda potansiyel bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 olu\u015fturdu\u011funda, Bandit bu durumu h\u0131zl\u0131ca belirtebilir. Bu proaktif yakla\u015f\u0131m, geli\u015ftirme ekibinin g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 daha \u00fcretime gitmeden ele almas\u0131n\u0131 sa\u011flar ve b\u00f6ylece olas\u0131 siber sald\u0131r\u0131lara kar\u015f\u0131 daha g\u00fc\u00e7l\u00fc bir savunma hatt\u0131 olu\u015fturur. Sonu\u00e7 olarak, Bandit, Python uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcze entegre edebilece\u011finiz vazge\u00e7ilmez bir ara\u00e7t\u0131r. \u015eimdi, Bandit&#8217;i projemize nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ve ilk taramay\u0131 nas\u0131l yapaca\u011f\u0131m\u0131z\u0131 \u00f6\u011frenelim.<\/p>\n<h2>Bandit Kurulumu ve Temel Kullan\u0131m: \u0130lk G\u00fcvenlik Taramas\u0131 Nas\u0131l Yap\u0131l\u0131r?<\/h2>\n<p>Bandit&#8217;i kullanmaya ba\u015flamak olduk\u00e7a basittir. Python tabanl\u0131 bir ara\u00e7 oldu\u011fu i\u00e7in kurulumu, genellikle Python paket y\u00f6neticisi <code>pip<\/code> arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. Bu b\u00f6l\u00fcmde, Bandit&#8217;i sisteminize nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve Python projenizde temel bir g\u00fcvenlik taramas\u0131 yapmak i\u00e7in komut sat\u0131r\u0131n\u0131 nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayaca\u011f\u0131z.<\/p>\n<h3>Bandit Kurulumu<\/h3>\n<p>Terminalinizi veya komut istemcinizi a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\n    pip install bandit\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, Bandit'i Python ortam\u0131n\u0131za kuracakt\u0131r. Kurulum tamamland\u0131ktan sonra, <code>bandit --version<\/code> komutu ile kurulumun ba\u015far\u0131l\u0131 olup olmad\u0131\u011f\u0131n\u0131 ve hangi s\u00fcr\u00fcm\u00fcn y\u00fcklendi\u011fini kontrol edebilirsiniz.<\/p>\n<h3>Basit Bir Python Projesi Olu\u015fturma<\/h3>\n<p>Bandit'in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmek i\u00e7in k\u00fc\u00e7\u00fck bir \u00f6rnek proje olu\u015ftural\u0131m. Proje dizini i\u00e7erisinde <code>ornek_uygulama<\/code> ad\u0131nda bir klas\u00f6r ve i\u00e7inde birka\u00e7 Python dosyas\u0131 olu\u015ftural\u0131m. Bu dosyalardan biri bilinen bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 i\u00e7erecek \u015fekilde tasarlanacakt\u0131r.<\/p>\n<pre><code>\n    # ornek_uygulama\/app.py\n    import sqlite3\n\n    def get_user_data(username):\n        conn = sqlite3.connect('database.db')\n        cursor = conn.cursor()\n        # Potansiyel SQL Enjeksiyonu a\u00e7\u0131\u011f\u0131\n        query = \"SELECT * FROM users WHERE username = '\" + username + \"'\"\n        cursor.execute(query)\n        data = cursor.fetchall()\n        conn.close()\n        return data\n\n    def calculate_sum(a, b):\n        return a + b\n\n    if __name__ == \"__main__\":\n        print(\"Uygulama ba\u015flat\u0131ld\u0131.\")\n        # G\u00fcvenlik a\u00e7\u0131\u011f\u0131 i\u00e7eren fonksiyonu \u00e7a\u011f\u0131r\u0131yoruz\n        # print(get_user_data(\"admin' OR '1'='1\"))\n        print(calculate_sum(5, 3))\n\n    # ornek_uygulama\/utils.py\n    import os\n\n    def get_api_key():\n        # Sert kodlanm\u0131\u015f API anahtar\u0131 - B105 kural\u0131 taraf\u0131ndan tespit edilir\n        return \"SUPER_SECRET_API_KEY_12345\"\n\n    def some_utility_function():\n        print(\"Yard\u0131mc\u0131 fonksiyon \u00e7al\u0131\u015f\u0131yor.\")\n\n    # ornek_uygulama\/config.py\n    DEBUG = True\n    ADMIN_EMAIL = \"admin@example.com\"\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnek kodda, <code>app.py<\/code> dosyas\u0131nda potansiyel bir SQL enjeksiyonu a\u00e7\u0131\u011f\u0131 (B608: SQL query construction using string formatting) ve <code>utils.py<\/code> dosyas\u0131nda sert kodlanm\u0131\u015f bir API anahtar\u0131 (B105: Hardcoded password_string) bulunmaktad\u0131r. Bandit, bu t\u00fcr desenleri tespit etmek \u00fczere tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h3>\u0130lk G\u00fcvenlik Taramas\u0131n\u0131 Yapma<\/h3>\n<p>\u015eimdi, terminalinizi <code>ornek_uygulama<\/code> klas\u00f6r\u00fcn\u00fcn bir \u00fcst dizinine getirin ve Bandit'i projeniz \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in a\u015fa\u011f\u0131daki komutu kullan\u0131n:<\/p>\n<pre><code>\n    bandit -r ornek_uygulama\/\n    <\/pre>\n<p><\/code><\/p>\n<ul>\n<li><code>-r<\/code> veya <code>--recursive<\/code>: Bandit'in belirtilen dizin alt\u0131ndaki t\u00fcm Python dosyalar\u0131n\u0131 taramas\u0131n\u0131 sa\u011flar.<\/li>\n<li><code>ornek_uygulama\/<\/code>: Taranacak dizinin yoludur.<\/li>\n<\/ul>\n<h3>Bandit \u00c7\u0131kt\u0131s\u0131n\u0131 Yorumlama<\/h3>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra Bandit, taranan dosyalardaki potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 listeleyen bir \u00e7\u0131kt\u0131 g\u00f6sterecektir. \u00c7\u0131kt\u0131 genellikle a\u015fa\u011f\u0131daki bilgileri i\u00e7erir:<\/p>\n<ul>\n<li><strong>Severity (\u00d6nem Derecesi):<\/strong> Bulunan a\u00e7\u0131\u011f\u0131n ne kadar kritik oldu\u011funu belirtir (HIGH, MEDIUM, LOW).<\/li>\n<li><strong>Confidence (G\u00fcvenilirlik):<\/strong> Bandit'in bulgunun ger\u00e7ek bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 oldu\u011funa dair ne kadar emin oldu\u011funu g\u00f6sterir (HIGH, MEDIUM, LOW).<\/li>\n<li><strong>Issue (Sorun):<\/strong> A\u00e7\u0131klaman\u0131n k\u0131sa bir \u00f6zetidir.<\/li>\n<li><strong>Test ID (Test Kimli\u011fi):<\/strong> Hangi Bandit kural\u0131n\u0131n tetiklendi\u011fini g\u00f6steren benzersiz bir kimlik (\u00f6rn. B608, B105).<\/li>\n<li><strong>File (Dosya):<\/strong> A\u00e7\u0131\u011f\u0131n bulundu\u011fu dosyan\u0131n yolu.<\/li>\n<li><strong>Line (Sat\u0131r):<\/strong> A\u00e7\u0131\u011f\u0131n bulundu\u011fu sat\u0131r numaras\u0131.<\/li>\n<\/ul>\n<p>\u00d6rnek \u00e7\u0131kt\u0131n\u0131z muhtemelen \u015funa benzer olacakt\u0131r:<\/p>\n<pre><code>\n    [bandit] Run started: 2023-10-27 10:30:00\n\n    --------------------------------------------------\n    >> Issue: [B608:hardcoded_sql_expressions] SQL query construction using string formatting.\n       Severity: High   Confidence: High\n       Location: ornek_uygulama\/app.py:7\n       More Info: https:\/\/bandit.readthedocs.io\/en\/latest\/plugins\/b608_hardcoded_sql_expressions.html\n\n    >> Issue: [B105:hardcoded_password_string] Possible hardcoded password: 'SUPER_SECRET_API_KEY_12345'\n       Severity: High   Confidence: High\n       Location: ornek_uygulama\/utils.py:5\n       More Info: https:\/\/bandit.readthedocs.io\/en\/latest\/plugins\/b105_hardcoded_password_string.html\n\n    --------------------------------------------------\n    Files skipped (0):\n\n    --------------------------------------------------\n    [bandit] Aplikasyon \u00fczerinde taranan dosya: 3\n    [bandit] G\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulunan dosya: 2\n    [bandit] G\u00fcvenlik a\u00e7\u0131\u011f\u0131 say\u0131s\u0131: 2\n\n    ... [\u00f6zet bilgiler] ...\n    <\/pre>\n<p><\/code><\/p>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi, Bandit <code>app.py<\/code> dosyas\u0131ndaki SQL enjeksiyonu a\u00e7\u0131\u011f\u0131n\u0131 (B608) ve <code>utils.py<\/code> dosyas\u0131ndaki sert kodlanm\u0131\u015f API anahtar\u0131n\u0131 (B105) ba\u015far\u0131yla tespit etti. Her bir bulgu i\u00e7in, Bandit ayr\u0131ca daha fazla bilgi edinebilece\u011finiz bir ba\u011flant\u0131 da sa\u011flar. Bu ba\u011flant\u0131lar, sorunun ne oldu\u011funu, neden bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 oldu\u011funu ve nas\u0131l d\u00fczeltilece\u011fini anlaman\u0131za yard\u0131mc\u0131 olur. \u0130lk taraman\u0131zda bu t\u00fcr bulgularla kar\u015f\u0131la\u015fman\u0131z olduk\u00e7a normaldir; as\u0131l mesele, bu bulgular\u0131 nas\u0131l anlay\u0131p proaktif olarak d\u00fczeltece\u011finizi \u00f6\u011frenmektir. Bir sonraki b\u00f6l\u00fcmde, Bandit raporlar\u0131n\u0131 daha derinlemesine inceleyecek ve g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 gidermek i\u00e7in pratik stratejiler tart\u0131\u015faca\u011f\u0131z.<\/p>\n<h2>Bandit Raporlar\u0131n\u0131 Anlama ve G\u00fcvenlik A\u00e7\u0131klar\u0131n\u0131 Giderme Stratejileri<\/h2>\n<p>Bandit'in \u00e7\u0131kt\u0131s\u0131n\u0131 al\u0131p taraman\u0131n bitti\u011fini g\u00f6rmek sadece ba\u015flang\u0131\u00e7t\u0131r. As\u0131l de\u011fer, bu raporlar\u0131 do\u011fru bir \u015fekilde analiz etmek ve tespit edilen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 etkili bir \u015fekilde gidermektir. Bu b\u00f6l\u00fcmde, Bandit'in raporlama mekanizmas\u0131n\u0131 daha yak\u0131ndan inceleyecek, farkl\u0131 rapor formatlar\u0131n\u0131 tan\u0131yacak ve yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 gidermek i\u00e7in pratik stratejiler sunaca\u011f\u0131z. Ayr\u0131ca, ger\u00e7ek d\u00fcnya senaryosuna dayal\u0131 bir vaka analizi ile konuyu peki\u015ftirece\u011fiz.<\/p>\n<h3>Bandit \u00c7\u0131kt\u0131s\u0131n\u0131n Detaylar\u0131 ve Anlamlar\u0131<\/h3>\n<p>Bandit'in her bir bulgusu (issue) birka\u00e7 \u00f6nemli bilgi par\u00e7as\u0131yla birlikte gelir:<\/p>\n<ul>\n<li><strong>Test ID (Bxxx):<\/strong> Her bir Bandit kural\u0131 benzersiz bir kimli\u011fe sahiptir (\u00f6rne\u011fin, B101, B601, B301). Bu kimlik, belirli bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 t\u00fcr\u00fcn\u00fc tan\u0131mlar ve Bandit'in dok\u00fcmantasyonunda daha fazla bilgi bulmak i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>Severity (\u00d6nem Derecesi):<\/strong> A\u00e7\u0131\u011f\u0131n sistem \u00fczerindeki potansiyel etkisini g\u00f6sterir. Genellikle HIGH (Y\u00fcksek), MEDIUM (Orta) ve LOW (D\u00fc\u015f\u00fck) olarak s\u0131n\u0131fland\u0131r\u0131l\u0131r. Y\u00fcksek \u00f6nem dereceli sorunlar, acilen ele al\u0131nmas\u0131 gereken kritik zay\u0131fl\u0131klar\u0131 i\u015faret ederken, d\u00fc\u015f\u00fck \u00f6nem dereceliler daha az aciliyet ta\u015f\u0131r.<\/li>\n<li><strong>Confidence (G\u00fcvenilirlik):<\/strong> Bandit'in bu bulgunun ger\u00e7ekten bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 oldu\u011funa dair tahmini g\u00fcven d\u00fczeyini g\u00f6sterir. HIGH, MEDIUM, LOW olarak s\u0131n\u0131fland\u0131r\u0131l\u0131r. Y\u00fcksek g\u00fcvenilirlikteki bulgular, genellikle ger\u00e7ek g\u00fcvenlik a\u00e7\u0131klar\u0131d\u0131r ve \u00f6ncelik verilmelidir. D\u00fc\u015f\u00fck g\u00fcvenilirlik, yanl\u0131\u015f pozitif olma ihtimalinin daha y\u00fcksek oldu\u011fu anlam\u0131na gelebilir.<\/li>\n<li><strong>Issue\/Description (Sorun\/A\u00e7\u0131klama):<\/strong> Bulunan g\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131n k\u0131sa ve \u00f6z bir a\u00e7\u0131klamas\u0131. \u00d6rne\u011fin, \"SQL query construction using string formatting\" veya \"Possible hardcoded password\".<\/li>\n<li><strong>Location (Konum):<\/strong> G\u00fcvenlik a\u00e7\u0131\u011f\u0131n\u0131n hangi dosyada ve hangi sat\u0131rda bulundu\u011funu g\u00f6sterir (\u00f6rn. <code>ornek_uygulama\/app.py:7<\/code>).<\/li>\n<li><strong>More Info (Daha Fazla Bilgi):<\/strong> \u0130lgili Bandit kural\u0131n\u0131n dok\u00fcmantasyonuna y\u00f6nlendiren bir ba\u011flant\u0131d\u0131r. Bu ba\u011flant\u0131, a\u00e7\u0131\u011f\u0131n do\u011fas\u0131n\u0131, neden tehlikeli oldu\u011funu ve nas\u0131l d\u00fczeltilece\u011fine dair \u00f6rnekler i\u00e7erir. Bu, geli\u015ftiriciler i\u00e7in paha bi\u00e7ilmez bir kaynakt\u0131r.<\/li>\n<\/ul>\n<h3>Farkl\u0131 Rapor Formatlar\u0131<\/h3>\n<p>Bandit, sadece konsol \u00e7\u0131kt\u0131s\u0131 sa\u011flamakla kalmaz, ayn\u0131 zamanda \u00e7e\u015fitli formatlarda raporlar \u00fcretebilir. Bu, raporlar\u0131 di\u011fer ara\u00e7larla (\u00f6rn. proje y\u00f6netim sistemleri, g\u00fcvenlik orkestrasyon ara\u00e7lar\u0131) entegre etmek veya daha okunabilir bir formatta saklamak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<ul>\n<li><strong>JSON:<\/strong> Makine taraf\u0131ndan okunabilir, di\u011fer uygulamalarla entegrasyon i\u00e7in idealdir. <code>bandit -r ornek_uygulama\/ -f json -o rapor.json<\/code><\/li>\n<li><strong>XML:<\/strong> Benzer \u015fekilde makine taraf\u0131ndan okunabilir, baz\u0131 eski sistemlerle uyumluluk i\u00e7in kullan\u0131labilir. <code>bandit -r ornek_uygulama\/ -f xml -o rapor.xml<\/code><\/li>\n<li><strong>HTML:<\/strong> \u0130nsanlar taraf\u0131ndan okunabilir, taray\u0131c\u0131da a\u00e7\u0131labilir ve g\u00f6rsel olarak daha ho\u015f bir sunum sunar. <code>bandit -r ornek_uygulama\/ -f html -o rapor.html<\/code><\/li>\n<li><strong>CSV:<\/strong> Basit veri analizi veya elektronik tabloda inceleme i\u00e7in kullan\u0131\u015fl\u0131d\u0131r. <code>bandit -r ornek_uygulama\/ -f csv -o rapor.csv<\/code><\/li>\n<\/ul>\n<p><code>-f<\/code> (<code>--format<\/code>) parametresi \u00e7\u0131kt\u0131 format\u0131n\u0131 belirtirken, <code>-o<\/code> (<code>--output<\/code>) parametresi raporun kaydedilece\u011fi dosyay\u0131 belirtir.<\/p>\n<h3>G\u00fcvenlik A\u00e7\u0131klar\u0131n\u0131 Giderme Stratejileri<\/h3>\n<p>Bandit'in tespit etti\u011fi her bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131na spesifik \u00e7\u00f6z\u00fcmler gerekse de, baz\u0131 genel stratejiler \u00e7o\u011fu durumda ge\u00e7erlidir:<\/p>\n<ol>\n<li><strong>Giri\u015f Do\u011frulama (Input Validation):<\/strong> Kullan\u0131c\u0131dan gelen t\u00fcm girdileri dikkatlice do\u011frulay\u0131n ve temizleyin. G\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131n \u00e7o\u011fu, g\u00fcvensiz veya do\u011frulanmam\u0131\u015f girdilerden kaynaklan\u0131r.<\/li>\n<li><strong>\u00c7\u0131kt\u0131 Kodlama (Output Encoding):<\/strong> Kullan\u0131c\u0131 taraf\u0131ndan girilen verileri web sayfalar\u0131nda veya di\u011fer \u00e7\u0131kt\u0131larda g\u00f6stermeden \u00f6nce uygun \u015fekilde kodlay\u0131n. Bu, XSS (Cross-Site Scripting) gibi a\u00e7\u0131klara kar\u015f\u0131 koruma sa\u011flar.<\/li>\n<li><strong>Parametreli Sorgular Kullan\u0131n:<\/strong> SQL enjeksiyonunu \u00f6nlemek i\u00e7in asla dinamik olarak SQL sorgular\u0131 olu\u015fturmay\u0131n. Bunun yerine, veritaban\u0131 ba\u011flay\u0131c\u0131n\u0131z\u0131n veya ORM'nizin sundu\u011fu parametreli sorgu mekanizmalar\u0131n\u0131 kullan\u0131n.<\/li>\n<li><strong>Hassas Verileri G\u00fcvenli Bir \u015eekilde Saklay\u0131n:<\/strong> Parolalar\u0131, API anahtarlar\u0131n\u0131, \u015fifreleme anahtarlar\u0131n\u0131 veya di\u011fer hassas bilgileri kodda sert kodlamay\u0131n. Bunun yerine, ortam de\u011fi\u015fkenleri, g\u00fcvenli konfig\u00fcrasyon dosyalar\u0131 veya \u00f6zel s\u0131r y\u00f6netimi \u00e7\u00f6z\u00fcmleri (\u00f6rn. Vault) kullan\u0131n.<\/li>\n<li><strong>G\u00fcvenli K\u00fct\u00fcphaneleri ve Fonksiyonlar\u0131 Kullan\u0131n:<\/strong> G\u00fcvenlik hassasiyeti olan i\u015flemler (\u00f6rn. \u015fifreleme, rastgele say\u0131 \u00fcretimi) i\u00e7in Python'\u0131n yerle\u015fik veya \u00fc\u00e7\u00fcnc\u00fc taraf g\u00fcvenli k\u00fct\u00fcphanelerini tercih edin. Bilinen zay\u0131fl\u0131klar\u0131 olan eski veya g\u00fcvensiz fonksiyonlardan ka\u00e7\u0131n\u0131n.<\/li>\n<li><strong>Minimum Yetki Prensibi:<\/strong> Uygulamalar\u0131n\u0131z\u0131n veya s\u00fcre\u00e7lerinizin yaln\u0131zca i\u015flerini yapmak i\u00e7in ihtiya\u00e7 duyduklar\u0131 minimum yetkilere sahip oldu\u011fundan emin olun.<\/li>\n<li><strong>Ba\u011f\u0131ml\u0131l\u0131klar\u0131 Y\u00f6netin:<\/strong> Kullan\u0131lan t\u00fcm \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphaneleri ve ba\u011f\u0131ml\u0131l\u0131klar\u0131 d\u00fczenli olarak g\u00fcncelleyin ve bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 taramak i\u00e7in ek ara\u00e7lar kullan\u0131n (\u00f6rn. <code>safety<\/code>, <code>pip-audit<\/code>).<\/li>\n<\/ol>\n<h3>Vaka Analizi: Hassas Veri S\u0131z\u0131nt\u0131s\u0131 - Hardcoded API Anahtarlar\u0131<\/h3>\n<p><strong>Senaryo:<\/strong> Bir geli\u015ftirici, uygulaman\u0131n harici bir hizmetle ileti\u015fim kurmas\u0131n\u0131 sa\u011flayan bir API anahtar\u0131n\u0131 yanl\u0131\u015fl\u0131kla do\u011frudan kaynak koduna sert kodlam\u0131\u015ft\u0131r. Bu kod, Git deposuna commit edilmi\u015ftir.<\/p>\n<pre><code>\n    # app.py\n    import requests\n\n    API_KEY = \"sk_live_XXXXXXXXXXXXXXXXXXXXX\" # Hassas API anahtar\u0131\n    ENDPOINT = \"https:\/\/api.example.com\/data\"\n\n    def get_data_from_api(query):\n        headers = {\"Authorization\": f\"Bearer {API_KEY}\"}\n        response = requests.get(f\"{ENDPOINT}?q={query}\", headers=headers)\n        return response.json()\n\n    # main.py\n    # ...\n    # data = get_data_from_api(\"users\")\n    # ...\n    <\/pre>\n<p><\/code><\/p>\n<p><strong>Bandit Tespiti:<\/strong> Geli\u015ftirme ekibi d\u00fczenli olarak Bandit taramas\u0131 yapar. Bandit, <code>app.py<\/code> dosyas\u0131nda a\u015fa\u011f\u0131daki bulguyu tespit eder:<\/p>\n<pre><code>\n    >> Issue: [B105:hardcoded_password_string] Possible hardcoded password: 'sk_live_XXXXXXXXXXXXXXXXXXXXX'\n       Severity: High   Confidence: High\n       Location: app.py:4\n       More Info: https:\/\/bandit.readthedocs.io\/en\/latest\/plugins\/b105_hardcoded_password_string.html\n    <\/pre>\n<p><\/code><\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> Geli\u015ftirici, Bandit raporunu inceledikten sonra API anahtar\u0131n\u0131n kodda olmamas\u0131 gerekti\u011fini fark eder. Anahtar\u0131 ortam de\u011fi\u015fkenlerine veya g\u00fcvenli bir s\u0131r y\u00f6netimi sistemine ta\u015f\u0131r:<\/p>\n<pre><code>\n    # app.py\n    import requests\n    import os\n\n    API_KEY = os.environ.get(\"API_KEY\") # Ortam de\u011fi\u015fkeninden al\n    if not API_KEY:\n        raise ValueError(\"API_KEY ortam de\u011fi\u015fkeni tan\u0131mlanmad\u0131.\")\n\n    ENDPOINT = \"https:\/\/api.example.com\/data\"\n\n    def get_data_from_api(query):\n        headers = {\"Authorization\": f\"Bearer {API_KEY}\"}\n        response = requests.get(f\"{ENDPOINT}?q={query}\", headers=headers)\n        return response.json()\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu d\u00fczeltme ile API anahtar\u0131 art\u0131k kaynak kodunda yer almaz, b\u00f6ylece kod deposu herkese a\u00e7\u0131k olsa bile anahtar\u0131n a\u00e7\u0131\u011fa \u00e7\u0131kmas\u0131 riski \u00f6nemli \u00f6l\u00e7\u00fcde azal\u0131r. Bandit, bu t\u00fcr yayg\u0131n ancak tehlikeli hatalar\u0131 otomatik olarak bularak geli\u015ftirme s\u00fcrecine b\u00fcy\u00fck bir g\u00fcvenlik katman\u0131 ekler. Raporlar\u0131 d\u00fczenli olarak incelemek ve bulgulara g\u00f6re hareket etmek, uygulaman\u0131z\u0131n g\u00fcvenli\u011fini s\u00fcrekli olarak iyile\u015ftirmenin anahtar\u0131d\u0131r.<\/p>\n<h2>Bandit ile Geli\u015fmi\u015f Yap\u0131land\u0131rma ve Entegrasyon Y\u00f6ntemleri: CI\/CD S\u00fcrecine Nas\u0131l Kat\u0131l\u0131r?<\/h2>\n<p>Bandit'in temel kullan\u0131m\u0131, h\u0131zl\u0131 ve etkili g\u00fcvenlik taramalar\u0131 i\u00e7in yeterlidir. Ancak, b\u00fcy\u00fck ve karma\u015f\u0131k projelerde veya s\u00fcrekli entegrasyon\/s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) ortamlar\u0131nda daha sofistike ihtiya\u00e7lar ortaya \u00e7\u0131kar. Bu b\u00f6l\u00fcmde, Bandit'i projenizin gereksinimlerine g\u00f6re nas\u0131l yap\u0131land\u0131rabilece\u011finizi, belirli testleri nas\u0131l dahil edip hari\u00e7 tutabilece\u011finizi ve en \u00f6nemlisi, Bandit'i CI\/CD boru hatt\u0131n\u0131za nas\u0131l entegre ederek otomatik g\u00fcvenlik denetimleri yapabilece\u011finizi ayr\u0131nt\u0131l\u0131 olarak inceleyece\u011fiz.<\/p>\n<h3>Bandit Yap\u0131land\u0131rma Dosyalar\u0131<\/h3>\n<p>Bandit, komut sat\u0131r\u0131 arg\u00fcmanlar\u0131 yerine bir yap\u0131land\u0131rma dosyas\u0131 (genellikle <code>.bandit<\/code> veya <code>bandit.yaml<\/code>) arac\u0131l\u0131\u011f\u0131yla da yap\u0131land\u0131r\u0131labilir. Bu, tarama ayarlar\u0131n\u0131 projenizin bir par\u00e7as\u0131 olarak s\u00fcr\u00fcm kontrol\u00fcnde tutman\u0131za olanak tan\u0131r ve ekibin tutarl\u0131 bir \u015fekilde ayn\u0131 ayarlarla tarama yapmas\u0131n\u0131 sa\u011flar. Python projelerinde yayg\u0131n olarak kullan\u0131lan <code>pyproject.toml<\/code> dosyas\u0131na da Bandit ayarlar\u0131 eklenebilir. Bir <code>.bandit<\/code> dosyas\u0131 \u00f6rne\u011fi \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<pre><code>\n    # .bandit\n    profile: test_profile\n    severity_level: high\n    confidence_level: high\n    excluded_files:\n        - \"tests\/*\"\n        - \"docs\/*\"\n    excluded_tests:\n        - B101 # assert kullan\u0131m\u0131\n        - B601 # subprocess shell=True kullan\u0131m\u0131\n    # Ya da sadece dahil edilecek testler:\n    # include_tests:\n    #     - B105\n    #     - B608\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu yap\u0131land\u0131rma dosyas\u0131 ile Bandit'i \u00e7al\u0131\u015ft\u0131rmak i\u00e7in sadece <code>bandit -c .bandit -r your_project\/<\/code> komutunu kullanman\u0131z yeterlidir. YAML veya TOML format\u0131ndaki bu dosyalar, projenin k\u00f6k dizinine yerle\u015ftirilerek otomatik olarak tan\u0131nabilir.<\/p>\n<h3>Testleri Dahil Etme ve Hari\u00e7 Tutma<\/h3>\n<p>Bazen belirli Bandit testlerinin projeniz i\u00e7in uygun olmad\u0131\u011f\u0131n\u0131 veya a\u015f\u0131r\u0131 derecede yanl\u0131\u015f pozitif \u00fcretti\u011fini fark edebilirsiniz. Bu durumda, <code>-x<\/code> (<code>--exclude<\/code>) veya <code>-i<\/code> (<code>--include<\/code>) komut sat\u0131r\u0131 parametrelerini veya yap\u0131land\u0131rma dosyas\u0131ndaki <code>excluded_tests<\/code>\/<code>include_tests<\/code> se\u00e7eneklerini kullanarak belirli testleri devre d\u0131\u015f\u0131 b\u0131rakabilir veya sadece belirli testleri \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/p>\n<ul>\n<li><strong>Belirli Testleri Hari\u00e7 Tutma:<\/strong> <code>bandit -r your_project\/ -x B101,B601<\/code><\/li>\n<li><strong>Belirli Testleri Dahil Etme:<\/strong> <code>bandit -r your_project\/ -i B105,B608<\/code><\/li>\n<\/ul>\n<p>Benzer \u015fekilde, belirli dosyalar\u0131 veya dizinleri taramadan hari\u00e7 tutmak i\u00e7in <code>-s<\/code> (<code>--skip<\/code>) komutunu kullanabilirsiniz: <code>bandit -r your_project\/ -s tests\/*,docs\/*<\/code>. Bu \u00f6zellikler, taramalar\u0131n\u0131z\u0131 projenizin gereksinimlerine g\u00f6re \u00f6zelle\u015ftirmenize ve sadece ger\u00e7ekten \u00f6nemli olan g\u00fcvenlik a\u00e7\u0131klar\u0131na odaklanman\u0131za yard\u0131mc\u0131 olur.<\/p>\n<h3>CI\/CD S\u00fcrecine Entegrasyon<\/h3>\n<p>Bandit'in en g\u00fc\u00e7l\u00fc kullan\u0131m alanlar\u0131ndan biri, otomatik g\u00fcvenlik taramalar\u0131 i\u00e7in CI\/CD boru hatlar\u0131na entegre edilmesidir. Bu, her kod de\u011fi\u015fikli\u011finde g\u00fcvenlik kontrollerinin otomatik olarak yap\u0131lmas\u0131n\u0131 sa\u011flayarak \"shift-left security\" prensibini tam anlam\u0131yla hayata ge\u00e7irir. Bir hata \u00fcretim ortam\u0131na ula\u015fmadan \u00e7ok \u00f6nce tespit edilir ve d\u00fczeltilir.<\/p>\n<h4>\u00d6rnek: GitHub Actions Entegrasyonu<\/h4>\n<p>GitHub Actions ile Bandit'i entegre etmek i\u00e7in projenizin k\u00f6k dizininde <code>.github\/workflows\/bandit.yml<\/code> ad\u0131nda bir dosya olu\u015fturabilirsiniz:<\/p>\n<pre><code>\n    # .github\/workflows\/bandit.yml\n    name: Bandit SAST Scan\n\n    on: [push, pull_request]\n\n    jobs:\n      bandit-scan:\n        runs-on: ubuntu-latest\n        steps:\n        - name: Checkout repository\n          uses: actions\/checkout@v3\n\n        - name: Set up Python\n          uses: actions\/setup-python@v4\n          with:\n            python-version: '3.x'\n\n        - name: Install dependencies\n          run: |\n            python -m pip install --upgrade pip\n            pip install bandit\n\n        - name: Run Bandit scan\n          run: |\n            bandit -r . -f html -o bandit_report.html || true\n            # '|| true' komutu, Bandit bulgu bulsa bile CI'\u0131n ba\u015far\u0131s\u0131z olmamas\u0131n\u0131 sa\u011flar.\n            # Kritik sorunlarda CI'\u0131 durdurmak i\u00e7in kald\u0131r\u0131labilir.\n\n        - name: Upload Bandit report\n          uses: actions\/upload-artifact@v3\n          with:\n            name: bandit-report\n            path: bandit_report.html\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu i\u015f ak\u0131\u015f\u0131:<\/p>\n<ol>\n<li>Her <code>push<\/code> veya <code>pull_request<\/code> olay\u0131nda tetiklenir.<\/li>\n<li>Depoyu klonlar ve Python ortam\u0131n\u0131 kurar.<\/li>\n<li>Bandit'i y\u00fckler.<\/li>\n<li>T\u00fcm proje \u00fczerinde Bandit taramas\u0131 yapar ve HTML format\u0131nda bir rapor olu\u015fturur.<\/li>\n<li>Olu\u015fturulan raporu bir GitHub Artifact olarak y\u00fckler, b\u00f6ylece geli\u015ftiriciler ve g\u00fcvenlik ekipleri bu rapora kolayca eri\u015febilir.<\/li>\n<\/ol>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: CI\/CD entegrasyonunda <code>bandit --exit-zero<\/code> kullanmak, Bandit'in bulgu bulsa bile ba\u015far\u0131l\u0131 bir \u00e7\u0131k\u0131\u015f koduyla bitmesini sa\u011flar. Bu, ba\u015flang\u0131\u00e7ta CI'\u0131 bozmadan g\u00fcvenlik taramalar\u0131n\u0131 ba\u015flatmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r. Daha sonra, kritik bulgularda CI'\u0131n durmas\u0131n\u0131 sa\u011flamak i\u00e7in bu parametreyi kald\u0131rabilir veya <code>--severity high --confidence high --fail-on any<\/code> gibi se\u00e7eneklerle yaln\u0131zca belirli risk seviyelerindeki bulgularda ba\u015far\u0131s\u0131z olmas\u0131n\u0131 sa\u011flayabilirsiniz.\n    <\/div>\n<p>GitLab CI, Jenkins veya di\u011fer CI\/CD platformlar\u0131 i\u00e7in de benzer yap\u0131land\u0131rmalar kolayca yap\u0131labilir. Temel mant\u0131k, Bandit'i ba\u011f\u0131ml\u0131l\u0131k olarak kurmak ve ard\u0131ndan proje dizini \u00fczerinde \u00e7al\u0131\u015ft\u0131rmak, sonras\u0131nda ise raporu uygun bir \u015fekilde depolamak veya yay\u0131nlamakt\u0131r. Bu otomatik kontroller, geli\u015ftiricilerin kodlar\u0131na odaklanmas\u0131n\u0131 sa\u011flarken, g\u00fcvenlik duvar\u0131n\u0131 s\u00fcrekli olarak g\u00fc\u00e7l\u00fc tutmaya yard\u0131mc\u0131 olur. \u0130leri d\u00fczey kullan\u0131m ve entegrasyonlar, Bandit'in projenizin g\u00fcvenlik duru\u015funu g\u00fc\u00e7lendirmede ne kadar \u00e7ok y\u00f6nl\u00fc bir ara\u00e7 olabilece\u011fini g\u00f6sterir. Ancak g\u00fcvenlik sadece bir ara\u00e7la sa\u011flanmaz; b\u00fct\u00fcnsel bir yakla\u015f\u0131m gereklidir.<\/p>\n<h2>Bandit'in \u00d6tesinde: Python G\u00fcvenli\u011fini Art\u0131racak Di\u011fer \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h2>\n<p>Bandit, Python uygulamalar\u0131n\u0131zdaki statik g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tespit etmek i\u00e7in m\u00fckemmel bir ara\u00e7t\u0131r, ancak siber g\u00fcvenlik \u00e7ok katmanl\u0131 bir disiplindir. Tek bir ara\u00e7, t\u00fcm g\u00fcvenlik ihtiya\u00e7lar\u0131n\u0131z\u0131 kar\u015f\u0131layamaz. Uygulaman\u0131z\u0131n genel g\u00fcvenlik duru\u015funu sa\u011flamla\u015ft\u0131rmak i\u00e7in Bandit'in \u00f6tesine ge\u00e7meli ve di\u011fer g\u00fcvenlik test ara\u00e7lar\u0131n\u0131 ve en iyi uygulamalar\u0131 da benimsemelisiniz. Bu b\u00f6l\u00fcm, Python g\u00fcvenli\u011fini daha da ileriye ta\u015f\u0131mak i\u00e7in ek stratejiler ve ipu\u00e7lar\u0131 sunmaktad\u0131r.<\/p>\n<h3>Ba\u011f\u0131ml\u0131l\u0131k G\u00fcvenlik Taramas\u0131<\/h3>\n<p>Modern Python projeleri genellikle y\u00fczlerce \u00fc\u00e7\u00fcnc\u00fc taraf k\u00fct\u00fcphaneye ve pakete ba\u011f\u0131ml\u0131d\u0131r. Bu ba\u011f\u0131ml\u0131l\u0131klar, projenize b\u00fcy\u00fck kolayl\u0131klar sa\u011flasa da, beraberinde bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 da getirebilir. Kendi kodunuz ne kadar g\u00fcvenli olursa olsun, kulland\u0131\u011f\u0131n\u0131z bir k\u00fct\u00fcphanedeki bir zay\u0131fl\u0131k t\u00fcm uygulaman\u0131z\u0131 riske atabilir.<\/p>\n<ul>\n<li><strong><code>safety<\/code>:<\/strong> Bu ara\u00e7, <code>requirements.txt<\/code> dosyan\u0131zdaki ba\u011f\u0131ml\u0131l\u0131klar\u0131 bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 kontrol eder.<\/li>\n<pre><code>\n        pip install safety\n        safety check -r requirements.txt\n        <\/pre>\n<p><\/code><\/p>\n<li><strong><code>pip-audit<\/code>:<\/strong> Python Packaging Authority (PyPA) taraf\u0131ndan desteklenen bu ara\u00e7, kurulu paketlerinizi veya bir <code>requirements.txt<\/code> dosyas\u0131n\u0131 PyPI Advisory Database'e kar\u015f\u0131 denetler.<\/li>\n<pre><code>\n        pip install pip-audit\n        pip-audit\n        # Veya belirli bir dosya i\u00e7in:\n        pip-audit -r requirements.txt\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu ara\u00e7lar\u0131 CI\/CD boru hatt\u0131n\u0131za entegre ederek, yeni ba\u011f\u0131ml\u0131l\u0131k eklendi\u011finde veya mevcut ba\u011f\u0131ml\u0131l\u0131klar\u0131n yeni a\u00e7\u0131klar\u0131 tespit edildi\u011finde otomatik olarak bilgilendirilirsiniz.<\/p>\n<h3>Dinamik Uygulama G\u00fcvenlik Testi (DAST)<\/h3>\n<p>SAST kodunuzu \u00e7al\u0131\u015ft\u0131rmadan analiz ederken, DAST (Dynamic Application Security Testing) arac\u0131 uygulaman\u0131z\u0131 \u00e7al\u0131\u015f\u0131r durumda test eder. Uygulamaya d\u0131\u015far\u0131dan sald\u0131rgan g\u00f6z\u00fcyle yakla\u015f\u0131r ve ger\u00e7ek zamanl\u0131 olarak zay\u0131fl\u0131klar\u0131 bulmaya \u00e7al\u0131\u015f\u0131r. DAST ara\u00e7lar\u0131, yap\u0131land\u0131rma hatalar\u0131n\u0131, kimlik do\u011frulama zay\u0131fl\u0131klar\u0131n\u0131 ve oturum y\u00f6netimindeki sorunlar\u0131 tespit edebilir. \u00d6rnek olarak OWASP ZAP veya Burp Suite gibi ara\u00e7lar kullan\u0131labilir.<\/p>\n<h3>G\u00fcvenli Yaz\u0131l\u0131m Geli\u015ftirme Ya\u015fam D\u00f6ng\u00fcs\u00fc (SSDLC)<\/h3>\n<p>G\u00fcvenlik, sadece test a\u015famas\u0131na de\u011fil, t\u00fcm yaz\u0131l\u0131m geli\u015ftirme ya\u015fam d\u00f6ng\u00fcs\u00fcne entegre edilmelidir. Bu, g\u00fcvenlik gereksinimlerinin tasar\u0131m a\u015famas\u0131nda belirlenmesi, g\u00fcvenli kodlama standartlar\u0131n\u0131n benimsenmesi ve d\u00fczenli g\u00fcvenlik e\u011fitimlerinin sa\u011flanmas\u0131 anlam\u0131na gelir.<\/p>\n<ul>\n<li><strong>Tasar\u0131m A\u015famas\u0131:<\/strong> G\u00fcvenlik hedeflerini belirleyin, tehdit modelleme (threat modeling) yap\u0131n ve g\u00fcvenlik risklerini \u00f6nceden tahmin edin.<\/li>\n<li><strong>Kodlama A\u015famas\u0131:<\/strong> G\u00fcvenli kodlama k\u0131lavuzlar\u0131n\u0131 takip edin, girdi do\u011frulamaya \u00f6ncelik verin, \u015fifreleme ve karma (hashing) algoritmalar\u0131n\u0131 do\u011fru kullan\u0131n.<\/li>\n<li><strong>Code Review (Kod \u0130ncelemesi):<\/strong> Akranlar\u0131n\u0131zla d\u00fczenli kod incelemeleri yaparak hem i\u015flevsel hatalar\u0131 hem de g\u00fcvenlik zay\u0131fl\u0131klar\u0131n\u0131 yakalay\u0131n. Bandit gibi ara\u00e7lar\u0131n tespit edemedi\u011fi mant\u0131ksal hatalar\u0131 bulmak i\u00e7in insan g\u00f6z\u00fc hala de\u011ferlidir.<\/li>\n<\/ul>\n<h3>Runtime Uygulama Korumas\u0131 (RASP)<\/h3>\n<p>RASP (Runtime Application Self-Protection) \u00e7\u00f6z\u00fcmleri, uygulamalar\u0131n \u00e7al\u0131\u015fma zaman\u0131nda kendilerini siber sald\u0131r\u0131lardan korumas\u0131na olanak tan\u0131r. Uygulama i\u00e7ine entegre edilen bir ajan, gelen istekleri ve giden yan\u0131tlar\u0131 analiz ederek k\u00f6t\u00fc niyetli davran\u0131\u015flar\u0131 an\u0131nda tespit edebilir ve engelleyebilir. Bu, s\u0131f\u0131r g\u00fcn a\u00e7\u0131klar\u0131na kar\u015f\u0131 ek bir savunma katman\u0131 sa\u011flayabilir.<\/p>\n<h3>Kimlik Do\u011frulama ve Yetkilendirme<\/h3>\n<ul>\n<li><strong>G\u00fc\u00e7l\u00fc Kimlik Do\u011frulama:<\/strong> Parola politikalar\u0131n\u0131 zorunlu k\u0131l\u0131n, \u00e7ok fakt\u00f6rl\u00fc kimlik do\u011frulamay\u0131 (MFA) etkinle\u015ftirin.<\/li>\n<li><strong>Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (RBAC):<\/strong> Kullan\u0131c\u0131lar\u0131n ve servislerin sadece ihtiya\u00e7 duyduklar\u0131 kaynaklara eri\u015fmesini sa\u011flayarak minimum yetki prensibini uygulay\u0131n.<\/li>\n<\/ul>\n<h3>G\u00fcnl\u00fck Kayd\u0131 ve \u0130zleme (Logging & Monitoring)<\/h3>\n<p>Uygulaman\u0131zdaki g\u00fcvenlik olaylar\u0131n\u0131 d\u00fczenli olarak kaydedin ve bu g\u00fcnl\u00fckleri merkezi bir konumda izleyin. Ba\u015far\u0131s\u0131z oturum a\u00e7ma giri\u015fimleri, yetkisiz eri\u015fim denemeleri veya \u015f\u00fcpheli API \u00e7a\u011fr\u0131lar\u0131 gibi anormal davran\u0131\u015flar, potansiyel bir sald\u0131r\u0131n\u0131n erken g\u00f6stergeleri olabilir. Bu g\u00fcnl\u00fckler, bir g\u00fcvenlik ihlali durumunda soru\u015fturma i\u00e7in de hayati \u00f6neme sahiptir.<\/p>\n<h3>G\u00fcvenlik G\u00fcncellemelerini Takip Edin<\/h3>\n<p>Python'\u0131n ve kulland\u0131\u011f\u0131n\u0131z t\u00fcm k\u00fct\u00fcphanelerin g\u00fcvenlik b\u00fcltenlerini ve yamalar\u0131n\u0131 d\u00fczenli olarak takip edin. G\u00fcvenlik a\u00e7\u0131klar\u0131 s\u00fcrekli olarak ke\u015ffedildi\u011fi i\u00e7in, yaz\u0131l\u0131mlar\u0131n\u0131z\u0131 g\u00fcncel tutmak, bu a\u00e7\u0131klardan yararlan\u0131lmas\u0131n\u0131 \u00f6nlemenin en temel yollar\u0131ndan biridir.<\/p>\n<p>Bandit, Python g\u00fcvenlik yolculu\u011funuzun g\u00fc\u00e7l\u00fc bir ba\u015flang\u0131c\u0131d\u0131r. Ancak, kapsaml\u0131 bir g\u00fcvenlik duru\u015fu olu\u015fturmak i\u00e7in bu di\u011fer ara\u00e7lar\u0131 ve en iyi uygulamalar\u0131 da stratejinize entegre etmelisiniz. Unutmay\u0131n, g\u00fcvenlik bir var\u0131\u015f noktas\u0131 de\u011fil, s\u00fcrekli bir s\u00fcre\u00e7tir.<\/p>\n<h2>Sonu\u00e7: G\u00fcvenli Kod Geli\u015ftirme Yolculu\u011funuzda Bandit<\/h2>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn ba\u011flant\u0131l\u0131 d\u00fcnyas\u0131nda, yaz\u0131l\u0131m g\u00fcvenli\u011fi her zamankinden daha kritik bir \u00f6neme sahiptir. Python uygulamalar\u0131, pop\u00fclerlikleri nedeniyle siber sald\u0131rganlar\u0131n hedefi olma potansiyeline sahiptir. Bu makale boyunca, Python uygulamalar\u0131n\u0131z\u0131n g\u00fcvenli\u011fini art\u0131rmak i\u00e7in Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131n\u0131n, \u00f6zellikle de Bandit'in ne kadar de\u011ferli oldu\u011funu ayr\u0131nt\u0131l\u0131 olarak inceledik. Bandit, kod taban\u0131n\u0131zdaki potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce tespit ederek, geli\u015ftirme d\u00f6ng\u00fcs\u00fcn\u00fcn en erken a\u015famalar\u0131nda m\u00fcdahale etmenizi sa\u011flar.<\/p>\n<p>Bandit'i projenize entegre etmek ve d\u00fczenli olarak \u00e7al\u0131\u015ft\u0131rmak, geli\u015ftiricilerin g\u00fcvenlik konusunda daha bilin\u00e7li olmalar\u0131na ve g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 \u00fcretime ula\u015fmadan \u00f6nce proaktif olarak d\u00fczeltmelerine olanak tan\u0131r. Kurulumdan temel kullan\u0131ma, raporlar\u0131 anlamadan CI\/CD entegrasyonuna kadar ad\u0131m ad\u0131m ilerleyerek, Bandit'in g\u00fc\u00e7l\u00fc yeteneklerinden nas\u0131l faydalanabilece\u011finizi g\u00f6sterdik. Sert kodlanm\u0131\u015f parolalar veya SQL enjeksiyonu gibi yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 tespit etme yetene\u011fi, Bandit'i her Python geli\u015ftiricisinin ara\u00e7 setinde bulunmas\u0131 gereken bir eleman yapar.<\/p>\n<p>Ancak, g\u00fcvenli\u011fin sadece bir ara\u00e7la sa\u011flanamayaca\u011f\u0131n\u0131n da alt\u0131n\u0131 \u00e7izdik. Bandit, g\u00fcvenlik duru\u015funuzu g\u00fc\u00e7lendiren \u00f6nemli bir katman olsa da, ba\u011f\u0131ml\u0131l\u0131k taramas\u0131, DAST, g\u00fcvenli kod incelemeleri, tehdit modellemesi ve s\u00fcrekli g\u00fcvenlik izleme gibi di\u011fer en iyi uygulamalarla birle\u015ftirilmesi gerekir. G\u00fcvenlik, t\u00fcm geli\u015ftirme ekibinin ortak sorumlulu\u011fundad\u0131r ve kodlama, test etme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin her a\u015famas\u0131nda d\u00fc\u015f\u00fcn\u00fclmelidir. Bu b\u00fct\u00fcnsel yakla\u015f\u0131m, Python uygulamalar\u0131n\u0131z\u0131n hem sa\u011flam hem de sald\u0131r\u0131lara kar\u015f\u0131 diren\u00e7li olmas\u0131n\u0131 sa\u011flayacakt\u0131r. G\u00fcvenli kod geli\u015ftirme yolculu\u011funuzda Bandit, sizi do\u011fru y\u00f6ne y\u00f6nlendiren g\u00fcvenilir bir k\u0131lavuzdur. Onu benimseyin, yeteneklerini \u00f6\u011frenin ve uygulamalar\u0131n\u0131z\u0131 daha g\u00fcvenli hale getirme taahh\u00fcd\u00fcn\u00fcz\u00fc s\u00fcrd\u00fcr\u00fcn.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt>Bandit sadece Python i\u00e7in mi ge\u00e7erli?<\/dt>\n<dd>Evet, Bandit \u00f6zellikle Python kaynak kodunu analiz etmek \u00fczere tasarlanm\u0131\u015f bir SAST arac\u0131d\u0131r. Di\u011fer programlama dilleri i\u00e7in farkl\u0131 SAST ara\u00e7lar\u0131 bulunmaktad\u0131r.<\/dd>\n<dt>Bandit a\u00e7\u0131k kaynakl\u0131 m\u0131?<\/dt>\n<dd>Evet, Bandit a\u00e7\u0131k kaynakl\u0131 bir projedir ve GitHub \u00fczerinde geli\u015ftirilmektedir. Bu, topluluk taraf\u0131ndan desteklendi\u011fi ve s\u00fcrekli olarak geli\u015ftirildi\u011fi anlam\u0131na gelir.<\/dd>\n<dt>Bandit performans\u0131 etkiler mi?<\/dt>\n<dd>Bandit, uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmadan kaynak kodu analiz etti\u011fi i\u00e7in uygulaman\u0131z\u0131n \u00e7al\u0131\u015fma zaman\u0131 performans\u0131n\u0131 etkilemez. Tarama s\u00fcresi, projenizin boyutuna ve karma\u015f\u0131kl\u0131\u011f\u0131na ba\u011fl\u0131d\u0131r, ancak genellikle h\u0131zl\u0131d\u0131r.<\/dd>\n<dt>Bandit t\u00fcm g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 bulabilir mi?<\/dt>\n<dd>Bandit, bilinen desenlere dayal\u0131 statik analiz yapar ve yayg\u0131n g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 (SQL enjeksiyonu, sert kodlanm\u0131\u015f s\u0131rlar vb.) etkili bir \u015fekilde tespit eder. Ancak, mant\u0131ksal a\u00e7\u0131kl\u0131klar\u0131, \u00e7al\u0131\u015fma zaman\u0131 sorunlar\u0131n\u0131 veya s\u0131f\u0131r g\u00fcn a\u00e7\u0131klar\u0131n\u0131 tespit edemez. Kapsaml\u0131 bir g\u00fcvenlik i\u00e7in DAST ve manuel incelemeler gibi di\u011fer test t\u00fcrleriyle birle\u015ftirilmelidir.<\/dd>\n<dt>Bandit'i ne s\u0131kl\u0131kla \u00e7al\u0131\u015ft\u0131rmal\u0131y\u0131m?<\/dt>\n<dd>Bandit'i CI\/CD boru hatt\u0131n\u0131z\u0131n bir par\u00e7as\u0131 olarak her kod de\u011fi\u015fikli\u011finde (her push veya pull request'te) \u00e7al\u0131\u015ft\u0131rman\u0131z idealdir. Ayr\u0131ca, b\u00fcy\u00fck \u00f6zellik geli\u015ftirmelerinden sonra veya kritik ba\u011f\u0131ml\u0131l\u0131k g\u00fcncellemelerinden sonra da manuel olarak \u00e7al\u0131\u015ft\u0131rmak faydal\u0131d\u0131r.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST)&hellip;","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":[1403],"tags":[],"class_list":{"0":"post-35958","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-python","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>Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin<\/title>\n<meta name=\"description\" content=\"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit&#039;i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\" \/>\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\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin\" \/>\n<meta property=\"og:description\" content=\"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit&#039;i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-06T01:31:03+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=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin\",\"datePublished\":\"2025-12-06T01:31:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\"},\"wordCount\":4954,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Python\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\",\"name\":\"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-06T01:31:03+00:00\",\"description\":\"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit'i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin\"}]},{\"@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":"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin","description":"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit'i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","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\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/","og_locale":"tr_TR","og_type":"article","og_title":"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin","og_description":"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit'i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","og_url":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-06T01:31:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin","datePublished":"2025-12-06T01:31:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/"},"wordCount":4954,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Python"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/","url":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/","name":"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-06T01:31:03+00:00","description":"Python uygulamalar\u0131n\u0131zdaki g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 erkenden tespit etmek ve gidermek mi istiyorsunuz? Bandit gibi Statik Uygulama G\u00fcvenlik Testi (SAST) ara\u00e7lar\u0131, kodunuzu analiz ederek potansiyel zay\u0131fl\u0131klar\u0131 ortaya \u00e7\u0131kar\u0131r. Bu makale, Bandit'i projenize entegre etmenin ve daha g\u00fcvenli kod geli\u015ftirmenin yollar\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131kl\u0131yor.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/python-uygulamalarinizi-bandit-ile-sast-araci-olarak-guvenli-hale-getirin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Python Uygulamalar\u0131n\u0131z\u0131 Bandit ile SAST Arac\u0131 Olarak G\u00fcvenli Hale Getirin"}]},{"@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\/35958","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=35958"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35958\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}