You need to enable JavaScript to run this app.

Ana içeriğe geç

Yazar: Birpay
SQL Injection ve Çözümü

Kod yazarken sadece işlevselliğe değil, güvenliğe de dikkat etmek gerekir. Özellikle veritabanı ile çalışan uygulamalarda, kullanıcıdan gelen verilerin doğrudan işlenmesi çok ciddi güvenlik açıklarına neden olabilir. Bu yazıda en yaygın güvenlik açıklarından biri olan SQL Injection'ı inceleyecek ve güvenli kodlama yöntemlerini örneklerle göstermeye çalışacağım.

- Sorun: SQL Injection Nedir?
SQL Injection (SQL Enjeksiyonu), kötü niyetli kullanıcıların, SQL sorgularına müdahale ederek veritabanı üzerinde yetkisiz işlemler yapabilmesini sağlayan bir güvenlik açığıdır.

- Örnek: Güvensiz Kod
Aşağıdaki örnek, kullanıcıdan alınan "kullanici_adi" ve "sifre" ile giriş yapılmaya çalışılan bir Python (SQLite) kod parçasıdır:

Kod:
import sqlite3

conn = sqlite3.connect('veritabani.db')
cursor = conn.cursor()

kullanici_adi = input("Kullanıcı adınızı girin: ")
sifre = input("Şifrenizi girin: ")

query = f"SELECT * FROM kullanicilar WHERE kullanici_adi = '{kullanici_adi}' AND sifre = '{sifre}'"
cursor.execute(query)

sonuc = cursor.fetchone()

if sonuc:
    print("Giriş başarılı!")
else:
    print("Hatalı kullanıcı adı veya şifre.")
- Sorun Nerede?
Bu kodda kullanıcıdan alınan veriler doğrudan SQL sorgusunun içine yerleştirilmiş. Bu durum kötü niyetli biri tarafından şu şekilde kullanılabilir:

Kod:
Kullanıcı adı: ' OR '1'='1
Şifre: ' OR '1'='1
Oluşan sorgu şöyle olur:

Kod:
SELECT * FROM kullanicilar WHERE kullanici_adi = '' OR '1'='1' AND sifre = '' OR '1'='1'
Bu sorgu daima doğru döner ve sisteme giriş yapılır. Bu, veri sızıntısına, yetkisiz erişime ve sistemin ele geçirilmesine neden olabilir.

- Çözüm: Parametreli Sorgular Kullanın
SQL Injection’a karşı en etkili yöntem parametreli sorgular kullanmaktır. Böylece kullanıcıdan gelen veri, doğrudan SQL’e yerleştirilmeden işlenir ve zararlı kod olarak algılanmaz.

Güvenli Kod Örneği
Kod:
import sqlite3

conn = sqlite3.connect('veritabani.db')
cursor = conn.cursor()

kullanici_adi = input("Kullanıcı adınızı girin: ")
sifre = input("Şifrenizi girin: ")

query = "SELECT * FROM kullanicilar WHERE kullanici_adi = ? AND sifre = ?"
cursor.execute(query, (kullanici_adi, sifre))

sonuc = cursor.fetchone()

if sonuc:
    print("Giriş başarılı!")
else:
    print("Hatalı kullanıcı adı veya şifre.")
- Neden Güvenli?
Bu yöntemde,

karakterleri yer tutucudur ve kullanıcıdan gelen veri bu yer tutuculara bağlanarak (binding) eklenir. Bu da verilerin yalnızca değer olarak algılanmasını sağlar, komut olarak değil.

Ekstra Önlemler
  1. Veritabanı kullanıcılarına minimum yetki verin.
    Uygulamanız sadece gerekli izinlerle çalışmalı (örneğin sadece SELECT/INSERT).
  2. Şifreleri veritabanında düz metin olarak saklamayın.
    SHA-256, bcrypt gibi şifreleme algoritmaları kullanın.
  3. Giriş denemelerine sınırlama koyun.
    Brute-force saldırılarına karşı korunmak için başarısız girişlerde süre limiti uygulayın.
  4. Kapsamlı loglama ve saldırı tespiti uygulayın.
Yorum Yorum Yok
Yazar: KodX
Android UI Performansı

[*]Layout Optimizasyonu: Layout hiyerarşinizi basit tutun. Gereksiz iç içe geçmiş
Kod:
ViewGroup
'lardan kaçının.
Kod:
<include>
,
Kod:
<merge>
ve
Kod:
ViewStub
etiketlerini kullanarak layout'larınızı optimize edin.
[*]
Kod:
onDraw()
Metodunu Verimli Kullanın:
Kod:
onDraw()
metodu sıkça çağrılır. Bu metot içinde karmaşık işlemler yapmaktan kaçının. Yalnızca çizimle ilgili işlemleri burada gerçekleştirin.
[*]RecyclerView ve ViewHolder Kullanımı: Listeler ve ızgaralar için
Kod:
ListView
yerine
Kod:
RecyclerView
kullanın ve
Kod:
ViewHolder
pattern'ini uygulayarak görünüm tutma ve yeniden kullanma işlemlerini optimize edin.
[*]Bitmap Yönetimi: Büyük boyutlu bitmap'leri yüklerken ve görüntülerken dikkatli olun. Gerekirse boyutlarını küçültün veya önbelleğe alın.
Kod:
LruCache
gibi mekanizmaları kullanabilirsiniz.
[*]Animasyonları Dikkatli Kullanın: Karmaşık ve uzun süren animasyonlar performansı olumsuz etkileyebilir. Performanslı animasyonlar için
Kod:
ValueAnimator
ve
Kod:
ObjectAnimator
gibi sınıfları kullanın.
[*]UI İş Parçacığını Bloklamayın: Ağ istekleri veya disk I/O gibi uzun süren işlemleri asla ana UI iş parçacığında yapmayın. Bu, uygulamanın donmasına (ANR - Application Not Responding) neden olur.


[*]
Kod:
ConstraintLayout
gibi optimize edilmiş layout'ları kullan.
[*]Deep view hierarchy’den kaçın (
Kod:
flat UI
prensibi).
[*]
Kod:
RecyclerView
ile uzun listelemeleri yönet,
Kod:
ListView
kullanımı artık önerilmez.
[*]Gölge, efekt, animasyon kullanımlarında GPU yükünü hafif tut.
Yazar: admin
Kotlin Spesifik Optimizasyonlar

Kotlin, JVM tabanlı bir dil olduğu için performans optimizasyonu genellikle JVM'nin davranışlarını ve Kotlin'in özelliklerini anlamayı gerektirir. Bazı başlıklarla sizlere Spesifik Optimizasyonları ele alarak inceleyelim.
- Inline Fonksiyonlar
Kotlin'de inline anahtar kelimesi, fonksiyon çağrılarının derleme zamanında kodun içine gömülmesini sağlar. Bu, özellikle yüksek seviyeli fonksiyonlar (lambda ifadeleriyle kullanılan) için performans kazancı sağlar çünkü fonksiyon çağrısı overhead'ini ortadan kaldırır.
  • Kullanım: Küçük ve sık çağrılan fonksiyonlarda (örneğin, map, filter gibi).
  • Örnek:
    kotlin

    Kod
    Kod:
    inline fun doSomething(block: () -> Unit) {
        block()
    }


  • Dikkat: Büyük fonksiyonlarda inline kullanmak kod boyutunu artırabilir, bu yüzden dikkatli olun.

- Data Sınıfları ve Hafıza Kullanımı

data class kullanımı, otomatik toString, equals, hashCode gibi metodlar sağlar, ancak büyük veri yapılarında bu metodlar performans maliyeti yaratabilir.
  • Optimizasyon:
    • Büyük veri setlerinde yalnızca gerekli metodları manuel olarak uygulayın.
    • data class yerine normal sınıflar kullanmayı düşünün eğer otomatik metodlara ihtiyacınız yoksa.
  • Örnek:
    kotlin

    Kod
    Kod:
    data class User(val id: Int, val name: String) // Otomatik metodlar
    class User(val id: Int, val name: String) // Daha az overhead
- Koleksiyon Optimizasyonları

Kotlin'in koleksiyon API'si (ör. listOf, map, filter) kullanımı kolaydır, ancak zincirleme işlemler performans sorunlarına yol açabilir.
  • Optimizasyon:
    • Gereksiz ara koleksiyonlardan kaçının. asSequence() kullanarak lazy evaluation yapın.
    • Büyük veri setlerinde mutableList veya array kullanarak manuel döngüler yazmayı düşünün.
  • Örnek:
    kotlin

    Kod
    Kod:
    // Performans maliyeti yüksek
    val result = list.filter { it > 0 }.map { it * 2 }

    // Daha iyi
    val result = list.asSequence().filter { it > 0 }.map { it * 2 }.toList()
- Coroutine Optimizasyonları

Kotlin coroutines, asenkron programlamayı kolaylaştırır, ancak yanlış kullanım kaynak israfına neden olabilir.
  • Optimizasyon:
    • Gereksiz launch veya async çağrılarından kaçının.
    • Dispatchers seçimine dikkat edin (ör. Dispatchers.IO I/O işlemleri için, Dispatchers.Default CPU yoğun işlemler için).
    • structured concurrency kullanarak coroutine scope'larını düzgün yönetin.
  • Örnek:
    kotlin

    Kod
    Kod:
    suspend fun fetchData() = withContext(Dispatchers.IO) {
        // Ağ çağrısı
    }
sizlerinde desteklerini bekliyoruz paylaşmak bir kişiye yardımcı olmak en büyük isteğimizdir.
Yazar: KodX
Android  Verimli Kod Yazma 
Konuya başlamadan önce hepinize merhaba demek istiyorum. Android uygulamanızın performansını artırmak için kullanabileceğiniz çeşitli teknikler bulunmaktadır. Bunların içinden benim önemsediğim şudur ki verimli kod yazma gelin bu başlığın üzerinde biraz duralım.
Gereksiz Nesne Oluşturmaktan Kaçının: Özellikle sıkça çağrılan döngülerde veya
Kod:
onDraw()
gibi metotlarda gereksiz nesne oluşturmaktan kaçının. Mümkünse nesneleri yeniden kullanın.
Dizeleri Verimli Kullanın: Sabit dizeler için
Kod:
String yerine
Kod:
StringBuilder veya
Kod:
StringBuffer
kullanın, özellikle döngüler içinde dize birleştirme işlemleri yapılıyorsa. Bu teknikler illaki olacak demiyorum kodlama algoritmsına nasıl alışırsanız öyle devam edersiniz benim size sadece tavsiyem olur. 
Veri Yapılarını Doğru Seçin: İhtiyaçlarınıza en uygun veri yapısını (örneğin,
Kod:
ArrayList
,
Kod:
LinkedList
,
Kod:
HashSet
,
Kod:
HashMap
) seçin. Yanlış veri yapısı performansı olumsuz etkileyebilir. Bu konuda çeşitli arkadaşlarımdan aldığım destekle yazıyorum.
Algoritmaları Optimize Edin: Kullandığınız algoritmaların zaman ve mekan karmaşıklıklarını göz önünde bulundurun. Daha verimli algoritmalar kullanarak performansı önemli ölçüde artırabilirsiniz.
Arka Plan İşlemlerini Doğru Yönetin: Uzun süren işlemleri (ağ istekleri, dosya okuma/yazma vb.) ana iş parçacığından ayırarak uygulamanın donmasını engelleyin.
Kod:
AsyncTask
,
Kod:
ExecutorService
,
Kod:
WorkManager
gibi mekanizmaları kullanabilirsiniz. Size zorluklar içerisinde yol arkadaşı olacaktır.

Sizinde yaşadığınız olaylar veya zorlukları atlatma şeklinizdeki teknikleri buradan paylaşabilirsiniz hepimiz öğrenmeye açığız Kodlar içimden bir parça Smile
 

Merhaba

Yazar: KodX
merhaba bende forumda yeniyim hepimiz için hayırlı olsun aranıza katılmak benim için çok önemli kod bilgilerimi pekiştirmek yeni insanlar tanımak istiyorum tekrar hepimiz için başarılı forumlar diliyorum.
Forum: Yeni Gelenler
1 Yorum
Yazar: admin
JavaScript'in Temel Kullanım Alanları

[*]Frontend Web Geliştirme: En yaygın kullanım alanıdır. Kullanıcı arayüzlerini dinamik hale getirmek, etkileşimli öğeler oluşturmak, form doğrulaması yapmak, AJAX istekleri göndermek ve daha pek çok şey için kullanılır.
[*]Backend Web Geliştirme (Node.js): Sunucu tarafında uygulamalar geliştirmek, API'ler oluşturmak ve veritabanlarıyla etkileşim kurmak için kullanılır.
[*]Mobil Uygulama Geliştirme (React Native, Ionic): Tek bir kod tabanıyla hem iOS hem de Android platformları için mobil uygulamalar geliştirmek mümkündür.
[*]Masaüstü Uygulama Geliştirme (Electron): Web teknolojilerini kullanarak çapraz platform masaüstü uygulamaları geliştirmek için kullanılır (örneğin, VS Code, Slack).
[*]Oyun Geliştirme (Phaser, PixiJS): Tarayıcı tabanlı 2D ve hatta bazı durumlarda 3D oyunlar geliştirmek için kullanılabilir.
[*]Nesnelerin İnterneti (IoT): Bazı gömülü sistemlerde ve IoT cihazlarında da JavaScript çalıştırılabilir.
Yorum Yorum Yok
Yazar: admin
JavaScript nedir
 
JavaScript tanımını yapalım sonrasında detaylı anlatıma geçebiliriz.  JavaScript Web geliştirme kariyerine başlamak isteyen herkesin öğrenmesi gereken en önemli dillerden biridir.
JavaScript, web sayfalarını dinamik ve etkileşimli hale getirmek için kullanılan, istemci tarafında (browser üzerinde) çalışan popüler bir programlama dilidir. Başlangıçta web tarayıcılarında çalışmak üzere tasarlanmış olsa da, günümüzde sunucu tarafında (Node.js ile), mobil uygulamalarda (React Native, Ionic), masaüstü uygulamalarında (Electron) ve hatta oyun geliştirmede bile kullanılmaktadır.
İşte JavaScript'in ne anlama geldiğini ve neden bu kadar önemli olduğunu özetleyen ana noktalar:
  • İstemci Tarafı Çalışma: JavaScript kodu, kullanıcıların web tarayıcılarında doğrudan çalışır. Bu, sunucuya sürekli istek göndermeden web sayfalarının anında tepki vermesini sağlar (örneğin, bir butona tıklayınca bir animasyonun başlaması).
  • Dinamiklik ve Etkileşim: JavaScript, HTML ve CSS ile oluşturulmuş statik web sayfalarına dinamik davranışlar ekler. Kullanıcı etkileşimlerine (tıklamalar, fare hareketleri, form gönderimleri vb.) yanıt verebilir, içeriği gerçek zamanlı olarak değiştirebilir, animasyonlar oluşturabilir ve kullanıcı arayüzünü zenginleştirebilir.
  • Nesne Yönelimli (Prototype-based): JavaScript, nesne yönelimli bir dildir. Ancak klasik sınıf tabanlı yaklaşımdan farklı olarak prototip tabanlı bir miras mekanizması kullanır. Bu, kodun organize edilmesini ve yeniden kullanılabilirliğini kolaylaştırır.
  • Yorumlanan Dil: JavaScript kodu, derlenmeye ihtiyaç duymadan tarayıcı tarafından satır satır yorumlanarak çalıştırılır. Bu, geliştirme sürecini hızlandırır.
  • Geniş Ekosistem: JavaScript'in çok büyük ve aktif bir geliştirici topluluğu vardır. Bu da çok sayıda kütüphane (React, Angular, Vue.js), framework (Express.js, Next.js) ve araç (npm, yarn) anlamına gelir. Bu araçlar, geliştirme sürecini hızlandırır ve karmaşık görevleri kolaylaştırır.
  • Çok Yönlülük: Başlangıçta sadece frontend geliştirme için kullanılırken, Node.js'in ortaya çıkmasıyla backend geliştirmede de popüler hale gelmiştir. Ayrıca mobil uygulama geliştirme ve masaüstü uygulama geliştirmede de önemli bir rol oynamaktadır.
Yorum Yorum Yok
Yazar: KodlarTR
CSS, web sitelerinin kullanıcıların doğrudan etkileşimde bulunduğu görsel ve etkileşimli katmanının (frontend) stilini tanımlamak için kullanılan bir stil dilidir. "Cascading Style Sheets" (Basamaklı Stil Sayfaları) kelimelerinin kısaltmasıdır.
CSS'in temel amacı, HTML (HyperText Markup Language) ile oluşturulan web sitesi içeriğinin nasıl görüneceğini belirlemektir. Bu görünüm; renkler, yazı tipleri, düzen, boyutlar, animasyonlar ve daha birçok görsel özelliği kapsar.
İşte Frontend CSS'in ne anlama geldiğini ve neden önemli olduğunu özetleyen ana noktalar:
  • Stil Tanımlama: CSS, HTML elementlerinin (başlıklar, paragraflar, resimler, bağlantılar vb.) nasıl biçimlendirileceğini tanımlar. Örneğin, bir başlığın hangi renkte, hangi boyutta ve hangi yazı tipinde olacağını CSS ile belirlersiniz.
  • Sunumdan Ayrılık: CSS, web sitesinin içeriğini (HTML) sunumundan (stil) ayırır. Bu sayede:
    • Daha Kolay Bakım: Stil değişiklikleri sadece CSS dosyalarında yapılır, HTML yapısına dokunmaya gerek kalmaz. Bu, büyük web sitelerinin bakımını çok daha kolaylaştırır.
    • Tutarlılık: Web sitesinin genelinde aynı stil kurallarını uygulamak kolaylaşır, bu da tutarlı bir kullanıcı deneyimi sağlar.
    • Erişilebilirlik: İçeriğin ve sunumun ayrılması, farklı cihazlar ve erişilebilirlik araçları için daha uygun yapılar oluşturmaya yardımcı olur.
  • Çeşitlilik ve Esneklik: CSS, web tasarımcılarına sonsuz sayıda stil seçeneği sunar. Basit metin biçimlendirmesinden karmaşık düzenlere, animasyonlara ve duyarlı tasarımlara kadar geniş bir yelpazede görsel efektler oluşturulabilir.
  • Duyarlı Tasarım (Responsive Design): CSS, farklı ekran boyutlarına (masaüstü, tablet, mobil) uyum sağlayan web siteleri oluşturmak için temel bir araçtır.
    Kod:
    @media
    sorguları gibi özellikler sayesinde, sitenin farklı cihazlarda en iyi şekilde görünmesi sağlanır.
  • Etkileşim ve Animasyon: CSS3 ile birlikte gelen özellikler sayesinde, basit animasyonlar ve geçiş efektleri kodlayarak web sitelerine dinamik bir hava katılabilir. Bu, kullanıcı etkileşimini artırabilir.
Özetle, Frontend CSS:
  • Web sitelerinin görsel sunumunu kontrol eden bir dildir.
  • HTML içeriğini biçimlendirmek, düzenlemek ve stil vermek için kullanılır.
  • Web geliştiricilere büyük bir esneklik ve kontrol sağlar.
  • Bakımı kolay, tutarlı ve duyarlı web siteleri oluşturmanın temelini oluşturur.
Frontend geliştiricilerinin HTML ve JavaScript ile birlikte en temel becerilerinden biridir. İyi bir CSS bilgisi, kullanıcı dostu ve görsel açıdan çekici web siteleri oluşturmak için kritik öneme sahiptir.
Yorum Yorum Yok
Yazar: admin
Müşteri Hizmetleri Chatbotları:
  • Problem: Müşteri sorularını ve sorunlarını otomatik olarak yanıtlayabilen ve çözebilen akıllı sohbet robotları geliştirmek.
  • Algoritma:
    1. Kullanıcı Girişini Anlama: Doğal dil işleme (NLP) tekniklerini kullanarak kullanıcının yazdığı metni analiz et ve niyetini (soru, talep, şikayet vb.) belirle.
    2. Bilgi Tabanına Erişme: İlgili bilgilere (sık sorulan sorular, ürün bilgileri, yardım dokümanları) erişmek için bir bilgi tabanını veya veritabanını sorgula.
    3. Yanıt Üretme: Kullanıcının niyetine ve erişilen bilgilere göre uygun bir yanıt oluştur.
    4. Diyalog Yönetimi: Sohbetin akışını yönetmek, önceki konuşmaları hatırlamak ve gerektiğinde ek sorular sormak.
    5. İnsan Devri: Çözülemeyen karmaşık durumlarda sohbeti bir insan müşteri temsilcisine aktarma mekanizması sağla.
  • Kodlama Alanları: Python (NLP, makine öğrenimi), JavaScript (web tabanlı chatbotlar).
Yazar: admin
E-Ticaret Öneri Sistemleri:
  • Problem: Bir online alışveriş sitesindeki kullanıcılara, ilgi alanlarına ve geçmiş satın alımlarına göre ürün önerilerinde bulunmak.
  • Algoritma:
    1. Kullanıcı Verilerini Toplama: Kullanıcının görüntülediği ürünler, satın aldığı ürünler, demografik bilgileri, arama geçmişi gibi verileri kaydet.
    2. Veri Analizi: Bu verileri kullanarak kullanıcıların ilgi alanlarını ve satın alma eğilimlerini belirle. (Örneğin, birlikte sıkça satın alınan ürünleri bulma - birliktelik kuralı madenciliği).
    3. Öneri Üretme: Belirlenen ilgi alanlarına ve eğilimlere göre ilgili ürünleri seç ve sırala. (Örneğin, benzer kullanıcıların satın aldığı ürünleri önerme - işbirlikçi filtreleme).
    4. Önerileri Sunma: Kullanıcının gezindiği sayfalarda veya özel öneri bölümlerinde ürünleri görüntüle.
    5. Geri Bildirim Toplama: Kullanıcının önerilere tıklama, satın alma veya reddetme gibi etkileşimlerini izleyerek algoritmayı sürekli iyileştir.
  • Kodlama Alanları: Python (veri analizi, makine öğrenimi), Java/Scala (büyük veri işleme), JavaScript (ön yüz etkileşimi).

Hoşgeldin, Ziyaretçi

Sitemizden yararlanabilmek için kayıt olmalısınız.

Forumda Ara

Forum İstatistikleri

Toplam Üyeler 5
Son Üye Birpay
Toplam Konular 28
Toplam Yorumlar 30

Kimler Çevrimiçi

Şu anda 2 aktif kullanıcı var.
(0 Üye - 2 Ziyaretçi)

Son Yazılanlar

SQL Injection ve Çözümü

Son Yorum: Birpay 05-03-2025, 07:06 PM

Merhaba

Son Yorum: admin 05-02-2025, 07:12 PM

Android UI Performansı

Son Yorum: KodX 04-27-2025, 04:46 PM

Kotlin Spesifik Optimizas...

Son Yorum: admin 04-27-2025, 04:42 PM

Android Verimli Kod Yazma

Son Yorum: KodX 04-27-2025, 02:15 PM

Merhaba Yeni Kod Dostları...

Son Yorum: KodX 04-27-2025, 11:55 AM

JavaScript'in Temel Kulla...

Son Yorum: admin 04-23-2025, 05:52 PM

JavaScript nedir

Son Yorum: admin 04-23-2025, 05:50 PM

CSS Nedir Tanımı

Son Yorum: KodlarTR 04-23-2025, 05:45 PM

Müşteri Hizmetleri Chatbo...

Son Yorum: admin 04-23-2025, 05:35 PM