Kullanıcı Yetkilendirme ve Güvenlik Önlemleri
Web stajımda kullanıcı seviyelerine göre yetkilendirme sistemleri geliştirdim. Aynı zamanda SQL injection ve session güvenliği gibi kritik güvenlik önlemlerini uygulayarak sistemimi daha güvenli hale getirdim.
Kullanıcı Yetkilendirme ve Güvenlik Önlemleri
Stajımın onuncu haftasında, kullanıcıların sisteme giriş yaptıktan sonra hangi yetkilerle işlem yapacağını belirlemeyi ve sistem güvenliğini artırmayı hedefleyen çalışmalara başladım. Bu süreçte kullanıcı yetkilendirme ve güvenlik önlemleri konusunda önemli bilgiler edindim.
Kullanıcı Yetkilendirme Nedir?
Kullanıcı yetkilendirme, giriş yapan kullanıcının hangi işlemleri yapabileceğini kontrol etmektir. Örneğin, "admin" kullanıcı tüm işlemleri yapabilirken, "kullanici" sadece içerik görüntüleyebilir.
Veritabanı Yapısı
CREATE TABLE kullanicilar (
id INT AUTO_INCREMENT PRIMARY KEY,
kullanici_adi VARCHAR(50),
sifre VARCHAR(50),
rol ENUM('admin','kullanici') DEFAULT 'kullanici'
);
Yeni kullanıcı ekleme:
INSERT INTO kullanicilar (kullanici_adi, sifre, rol)
VALUES ('admin', '1234', 'admin');
Giriş Sonrası Yetki Kontrolü
<?php
session_start();
$rol = $_SESSION['rol'];
if($rol == 'admin'){
echo "Yönetici paneline hoş geldiniz.";
} else {
echo "Bu sayfayı görüntülemeye yetkiniz yok.";
}
?>
SQL Injection Koruması
Veritabanına veri gönderirken doğrudan değişken eklemek yerine, prepared statement kullandım:
<?php
$baglanti = mysqli_connect("localhost", "root", "", "staj");
$stmt = mysqli_prepare($baglanti, "SELECT * FROM kullanicilar WHERE kullanici_adi=? AND sifre=?");
mysqli_stmt_bind_param($stmt, "ss", $kadi, $sifre);
$kadi = $_POST['kadi'];
$sifre = $_POST['sifre'];
mysqli_stmt_execute($stmt);
?>
Session Güvenliği
- Session ID’nin başkasına geçmemesi için
session_regenerate_id(true)kullandım. - Oturumu kapatırken
session_destroy()ile tüm verileri sıfırladım.
Basit Rol Tabanlı Menü Sistemi
<?php
if($_SESSION['rol'] == 'admin'){
echo "<a href='admin-panel.php'>Admin Panel</a>";
} else {
echo "<a href='kullanici-panel.php'>Kullanıcı Paneli</a>";
}
?>
Karşılaştığım Zorluklar
- Başta tüm kullanıcıların aynı sayfalara ulaşabilmesi sistemi karmaşıklaştırıyordu
- SQL injection hakkında farkındalığım yoktu, hazırlıksız SQL komutları tehlike oluşturuyordu
- Rol verisini session içinde doğru saklamayı öğrenmem zaman aldı
Genel Değerlendirme
Bu haftaki çalışmalarımda web projelerinde kullanıcıların yetkilerini sınırlandırmanın ne kadar önemli olduğunu fark ettim. Özellikle yönetici işlemlerini sadece admin rolündeki kullanıcılara açarak sistemin güvenliğini büyük ölçüde artırdım. Ayrıca SQL injection gibi saldırılara karşı nasıl koruma sağlayacağımı öğrenmek bana çok şey kattı.