Giriş Sayfası Güvenliği - PHP

Selamın Aleyküm Ben TheArmor

Bu Konumda Giriş Sayfalarında Güvenliği Sağlamak İçin Yazmış Olduğum Programın Kodlarını paylaşacağım ve Özelliklerini Anlatacağım.

Bu Programı daha da özelleştirebilir ve size uygun halede getirebilirsiniz elbette.

Programın İşlevi;

Program, kullanıcıların belirli bir kullanıcı adı ve şifre ile sisteme giriş yapmalarını sağlar ve giriş işlemi sonucunda kullanıcıları belirli bir sayfa veya içeriğe yönlendirir.

Giriş bilgilerinin girerken maximum deneme sayısını (5) geçtiğini tespit ettiğinde önlem almaktadır.
Özellikleri;

Kullanıcı Kimlik Doğrulama:
Kullanıcılar, bir kullanıcı adı ve şifre girerek sisteme giriş yapmaya çalışır. Giriş bilgileri, kullanıcı adı ve şifre kontrolü için kullanılır.

Şifre Güvenliği: Kullanıcıların şifreleri güvenli bir şekilde saklanır ve doğrulanır. Program şifreleri özel bir işlem olan hashing (karma) ile güven altına alınır ve bu sayede şifreler düz metin olarak saklanmaz.

Giriş Denemelerinin Sınırlanması: Kullanıcılar, belirli bir sayıda hatalı giriş denemesi yapabilirler. Bu program, belirli bir sayıdaki hatalı giriş denemesi sonrasında kullanıcıyı belirli bir süre boyunca engelleyebilir.

Giriş Denemelerini İzleme: Başarılı ve başarısız giriş denemelerini izlemek için giriş günlüğü (log) kullanabilirsiniz. Bu, anormallikleri tespit etmenize yardımcı olabilir.

Oturum Yönetimi: Program, oturum değişkenleri kullanarak kullanıcıların giriş denemelerini ve engellemelerini izler. Başarılı giriş sonrasında kullanıcının oturumunu açar.

Yönlendirme: Kullanıcılar doğru giriş bilgileriyle giriş yaptığında, "ana_sayfa.php" gibi bir ana sayfaya yönlendirilirler. Hatalı giriş bilgileri girildiğinde veya kullanıcı engellendiğinde ise hata sayfalarına yönlendirilirler.


PHP:
<?php
session_start();

// Kullanıcı adı ve şifrelerin güvenli bir şekilde saklandığı varsayalım.
// Gerçek uygulamalarda veritabanı kullanılmalıdır.
$users = [
    'kullanici1' => '$2y$10$XH2YbkXbdI6wWEFch7EZRuT3Pme4cnF.zfu6p8KmYRY7g8HdWTmMO', // Şifre: sifre1
    'kullanici2' => '$2y$10$7AY7vIEEpaYXluakvDmM6uZnpzY.5QgrU5D/B8HUr.M3wTOCHa4yG', // Şifre: sifre2
    // Daha fazla kullanıcı ekleyebilirsiniz.
];

// Kullanıcı engelleme süresini ve giriş sınırını ayarlayın.
$engelleme_suresi = 120; // 2 dakika
$max_giris_sayisi = 5;

if (!isset($_SESSION['login_attempts'])) {
    $_SESSION['login_attempts'] = 0;
}

if(isset($_POST['submit'])){
    $username = $_POST['username'];
    $password = $_POST['password'];

    if ($_SESSION['login_attempts'] >= $max_giris_sayisi) {
        // Kullanıcı giriş denemeleri sınırı aşıldığında, engelleme süresini başlatın.
        $_SESSION['engellendi'] = time() + $engelleme_suresi;
    }

    if (isset($_SESSION['engellendi']) && time() < $_SESSION['engellendi']) {
        // Kullanıcı engellendi, hata mesajını gösterin.
        header('Location: engellendi.html');
        exit(); // Kodun çalışmasını sonlandırın.
    } else {
        // Kullanıcı engelli değil, kimlik doğrulama işlemini başlatın.
        if (array_key_exists($username, $users) && password_verify($password, $users[$username])) {
            // Oturum değişkenini ayarlayın ve başarılı giriş sonucunda ana sayfaya yönlendirin.
            $_SESSION['username'] = $username;
            $_SESSION['login_attempts'] = 0;
           
            // Başarılı giriş günlüğü kaydet
            $log_message = "Başarılı giriş - Kullanıcı: $username, IP: " . $_SERVER['REMOTE_ADDR'];
            file_put_contents("login_log.txt", $log_message . PHP_EOL, FILE_APPEND);

            header('Location: ana_sayfa.php');
            exit(); // Kodun çalışmasını sonlandırın.
        } else {
            // Kullanıcı adı veya şifre yanlışsa, hata mesajını gösterin ve giriş denemelerini artırın.
            $_SESSION['login_attempts']++;
           
            // Başarısız giriş günlüğü kaydet
            $log_message = "Başarısız giriş - Kullanıcı: $username, IP: " . $_SERVER['REMOTE_ADDR'];
            file_put_contents("login_log.txt", $log_message . PHP_EOL, FILE_APPEND);

            header('Location: hata.html');
            exit(); // Kodun çalışmasını sonlandırın.
        }
    }
}

?>

*Kodları incelerken daha kolay yorumlayabilmeniz için yorum satıları ekledim.

Ek olarak HTML;


HTML:
    <!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<center>
<br><br>
<form method="POST" action="#">
<input type="text" name="username" size="20" placeholder="Username" required><br>
<br>
<input type="password" name "password" size="20" placeholder="Password" required><br>
<br>
<input type="submit" name="submit" value="Login">
</form>
</center>
</body>
</html>


THEARMOR
1011197.jpg
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.