Home / Uncategorized / Codeigniter da güvenlik önlemleri

Codeigniter da güvenlik önlemleri

CodeIgniter 3’te güvenlik önlemleri, uygulamanızın çeşitli saldırılara karşı korunmasını sağlamak için bir dizi yöntem ve en iyi uygulama içerir. İşte bazı önemli güvenlik önlemleri:

1. CSRF Koruması

CSRF (Cross-Site Request Forgery) saldırılarına karşı koruma sağlamak için CodeIgniter 3, yerleşik bir CSRF koruma özelliği sunar. Bunu etkinleştirmek için `application/config/config.php` dosyasını düzenleyin:

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();

2. XSS (Cross-Site Scripting) Koruması

Kullanıcı girdilerini XSS saldırılarına karşı filtrelemek için `xss_clean` fonksiyonunu kullanabilirsiniz. Form verilerini alırken ya da veritabanına yazarken bu fonksiyonu kullanabilirsiniz:

$this->input->post('field_name', TRUE); // TRUE parametresi XSS temizliğini etkinleştirir

3. SQL Enjeksiyonu Önleme

CodeIgniter’ın Veritabanı Sınıfı, veritabanı sorgularında otomatik olarak SQL enjeksiyonunu önleyen bağlanmış parametreleri kullanır. Örneğin:

$this->db->where('id', $this->input->post('id', TRUE));
$query = $this->db->get('my_table');

Alternatif olarak, manuel olarak sorgu yazarken `query bindings` kullanabilirsiniz:

$sql = "SELECT * FROM my_table WHERE id = ?";
$query = $this->db->query($sql, array($this->input->post('id', TRUE)));

4. Şifreleme

Kullanıcı şifreleri gibi hassas verileri şifrelemek için PHP’nin `password_hash` ve `password_verify` fonksiyonlarını kullanabilirsiniz:

// Şifre oluşturma
$hashed_password = password_hash($this->input->post('password'), PASSWORD_BCRYPT);

// Şifre doğrulama
if (password_verify($this->input->post(‘password’), $hashed_password)) {
// Şifre doğru
}

5. Dosya Yükleme Güvenliği

Dosya yüklemelerinde güvenlik sağlamak için CodeIgniter’ın dosya yükleme sınıfını kullanabilirsiniz. Bu sınıf, dosya türü, dosya boyutu ve dosya adı gibi kontrolleri yapmanıza olanak tanır:

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 2048;
$config['max_width'] = 1024;
$config['max_height'] = 768;

$this->load->library('upload', $config);

if (!$this->upload->do_upload('userfile')) {
$error = array('error' => $this->upload->display_errors());
} else {
$data = array('upload_data' => $this->upload->data());
}

6. Output Filtering (Çıktı Filtreleme)

XSS saldırılarına karşı koruma sağlamak için çıktı verilerini `htmlspecialchars` veya CodeIgniter’ın `html_escape` fonksiyonu ile filtreleyin:

echo html_escape($data);

7. Güvenlik Konfigürasyonları

`application/config/config.php` dosyasındaki bazı önemli güvenlik ayarları:

$config['global_xss_filtering'] = TRUE;
$config['encryption_key'] = 'your-encryption-key';

8. HTTP Güvenliği

* **HTTPS kullanımı**: Mümkünse uygulamanızı HTTPS üzerinden çalıştırın.
* **HTTP Güvenlik Başlıkları**: Güvenlik başlıkları ekleyerek uygulamanızı güçlendirin. Örneğin, `Content-Security-Policy`, `X-Content-Type-Options`, `X-Frame-Options`, ve `X-XSS-Protection` başlıklarını kullanabilirsiniz.

$this->output->set_header("Content-Security-Policy: default-src 'self';");
$this->output->set_header('X-Content-Type-Options: nosniff');
$this->output->set_header('X-Frame-Options: DENY');
$this->output->set_header('X-XSS-Protection: 1; mode=block');

Bu yöntemler ve konfigürasyonlarla CodeIgniter 3 uygulamanızı daha güvenli hale getirebilirsiniz. Güvenlik sürekli bir süreçtir, bu nedenle düzenli olarak güvenlik güncellemelerini takip etmeli ve uygulamanızı test etmelisiniz.

Cevap bırakın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir