<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Kaan Hanoğlu</title>
    <description>The latest articles on Forem by Kaan Hanoğlu (@kaan_hanoglu).</description>
    <link>https://forem.com/kaan_hanoglu</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3269005%2F669beb15-1f95-4947-9296-027992f5b61f.jpg</url>
      <title>Forem: Kaan Hanoğlu</title>
      <link>https://forem.com/kaan_hanoglu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kaan_hanoglu"/>
    <language>en</language>
    <item>
      <title>PHP ile Güvenli Bir Giriş Sistemi Nasıl Oluşturulur? (Ve Sık Yapılan Güvenlik Hataları)</title>
      <dc:creator>Kaan Hanoğlu</dc:creator>
      <pubDate>Mon, 16 Jun 2025 18:05:33 +0000</pubDate>
      <link>https://forem.com/kaan_hanoglu/php-ile-guvenli-bir-giris-sistemi-nasil-olusturulur-ve-sik-yapilan-guvenlik-hatalari-312</link>
      <guid>https://forem.com/kaan_hanoglu/php-ile-guvenli-bir-giris-sistemi-nasil-olusturulur-ve-sik-yapilan-guvenlik-hatalari-312</guid>
      <description>&lt;p&gt;Web projelerinde kullanıcı giriş sistemi (login system), saldırıya en açık bölümlerden biridir. Özellikle PHP ile geliştirilen sistemlerde güvenliğe dikkat edilmediğinde XSS, SQL Injection, Session Hijacking gibi ataklar sisteminizi tehdit eder.&lt;/p&gt;

&lt;p&gt;Bu yazıda, sıfırdan güvenli bir PHP giriş sistemi kurmanın temel prensiplerini ve dikkat edilmesi gereken noktaları paylaşacağım.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;En Yaygın Saldırılar ve Önlemleri&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;SQL Injection&lt;/strong&gt;
Kullanıcının girdiği veriler doğrudan SQL sorgusuna aktarılırsa, saldırgan veritabanınızı silebilir veya kullanıcı bilgilerine erişebilir.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Çözüm:&lt;/strong&gt;&lt;br&gt;
Her zaman prepared statements (PDO veya MySQLi) kullanın:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$stmt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$pdo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;prepare&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"SELECT * FROM users WHERE email = :email"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$stmt&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="s1"&gt;'email'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$email&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. XSS (Cross-Site Scripting)&lt;/strong&gt;&lt;br&gt;
Formlardan gelen veriler filtrelenmeden ekrana yazılırsa, saldırgan kötü amaçlı JavaScript kodları çalıştırabilir.&lt;/p&gt;

&lt;p&gt;Basit Çözüm:&lt;br&gt;
formdan gelen verileri bir clean funcksiyondan geçirdikten sonra, Çıktıları &lt;code&gt;htmlspecialchars()&lt;/code&gt; ile güvenli hale getirin: &lt;code&gt;echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Session Hijacking&lt;/strong&gt;&lt;br&gt;
Kullanıcı oturumu ele geçirilirse, saldırgan tüm işlemleri onun adına gerçekleştirebilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Çözüm:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;session_regenerate_id(true)&lt;/code&gt; ile her login işleminden sonra session ID yenileyin.&lt;br&gt;
HTTPS zorunluluğu ve &lt;code&gt;SameSite&lt;/code&gt;, &lt;code&gt;HttpOnly&lt;/code&gt;, &lt;code&gt;Secure&lt;/code&gt; cookie ayarlarını kullanın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Güvenli Giriş Sistemi İçin Ekstra İpuçları&lt;/strong&gt;&lt;br&gt;
Şifreleri daima &lt;code&gt;password_hash()&lt;/code&gt; türlerinden biri ile şifreleyin.&lt;br&gt;
&lt;strong&gt;Brute force&lt;/strong&gt; saldırılarına karşı giriş deneme limiti koyun.&lt;br&gt;
&lt;strong&gt;CSRF&lt;/strong&gt; token kullanın.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gerçek Hayatta Kullanım Örneği:&lt;/strong&gt;&lt;br&gt;
PHP ile geliştirilmiş bir ulaşım hizmeti sistemi olan &lt;a href="https://mavitaksi.com/" rel="noopener noreferrer"&gt;İstanbul Korsan Taksi&lt;/a&gt;, kullanıcı deneyimini ve güvenliği ön planda tutarak php pdo ile geliştirilmiştir. Bu sistemde hem müşteri paneli hem de yönetici girişleri için güvenlik önlemleri titizlikle uygulanmıştır.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>php</category>
      <category>pdo</category>
    </item>
  </channel>
</rss>
