SlideShare a Scribd company logo
1 of 22
CodeIgniter SemineriKütüphane YazmaGüvenlik ÖnlemleriCodeIgniter 2.0 Özgür Web Teknolojileri Günleri 2010 Yeditepe Üniversitesi, Airties Salonu  16 Ekim 2010 (14:00 – 14:45) Fatih BAZMAN (http://codeigniter.gen.tr)
CI->Basliklar CodeIgniter’ı nasıl zenginleştiririz? CodeIgniter’da güvenlik önlemleri CodeIgniter 2.0 ile neler değişecek?
CI->Nasil_Zenginlestiririz Kendi yazdığımız kütüphane dosyalarını ekleyerek: Örnek: Hata mesajlarını gösteren kütüphane yazılması Görevi : Session kütüphanesi ile gelen hata mesajı dizisini ekrana css bilgileriyle bastırmak Dosya adı: Error.php Yeri : application/libraries/error.php
CI->Nasil_Zenginlestiririz <?php  if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * Error flashing library * @author  Fatih Bazman : fatihbazman at gmail.com */ class Error {     var $CI;     function Error()     {         $this->CI =& get_instance();         log_message('debug', "Error Class Initialized");     } 						......... Sonraki sayfada devam ediyor
CI->Nasil_Zenginlestiririz 						............. Önceki sayfadan devam ediyor	 function error_view() 	{ 		if(is_array($this->CI->session->flashdata('msg'))) 		{ 			$text = '<blockquote>'; 			foreach($this->CI->session->flashdata('msg') as $row): 				$text .= '<p>'.$row.'</p>'; 			endforeach; 			$text .= '</blockquote>'; 			return $text; 		} 		else if($this->CI->session->flashdata('msg')) 		{ 			$text = '<blockquote><p>'.$this->CI->session->flashdata('msg').'</p></blockquote>'; 			return $text; 		}else return FALSE; 	} }
CI->Nasil_Zenginlestiririz Kütüphanenin kullanımı: Yüklenmesi: application/config/autoload.php $autoload['libraries'] = array( 'session','error'); Çağrılması:  application/controller/deneme.php $this->session->set_flashdata('msg', $this->form_validation->_error_array); application/views/deneme_view.php <?php echo $this->error->error_view()?>
CI->Nasil_Zenginlestiririz Helper Dosyaları Yazarak: Yeri : application/helpers/error_helper.php Yüklenmesi : application/config/autoload.php $autoload['helper'] = array(‘error');
CI->Nasil_Zenginlestiririz Helper Dosyası Yazılması: İçeriği: function error_view()  { 	$CI =& get_instance(); 	return $CI->error->error_view(); } Kullanılması application/views/deneme_view.php <?php echo error_view()?>
CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler CI güncel sürümünün takibi Kullanıcı girdilerinin kontrolü Yayın öncesi alınacak önlemler Varsayılan dizin yapısının ve adının değiştirilmesi  Kodlamaya yardımcı fonksiyonların kapatılması Model, library ve diğer sonradan eklenen dosyaların başına güvenlik satırı ekleme Hata mesajlarının yönetimi
CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler CI güncel sürümünün takibi: Geçerli sürüm: 1.7.2 (upload library patched) http://codeigniter.com/downloads/
CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler Kullanıcı girdilerinin kontrolü: $_GET, $_POST, $_COOKIE, $_SERVER fonksiyonları yerine CI Input sınıfının kullanılması. (int) $this->input->get(‘page',TRUE); Xss önlemek amacıyla form girdilerinde kontrol. $this->form_validation->set_rules('key',  'Aramakriteri', 'trim|required|xss_clean|min_length[3]'); $this->input->get(‘page',TRUE)
CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler Kullanıcı girdilerinin kontrolü: SQL injection önlemek amacıyla:  Active Record kullanımı $this->db->get_where(‘posts’,array(‘user_id’ => $user_id)); Bind query kullanımı: $sql = 'select * from tabloadi where sutun1=? and sutun2=?'; $this->db->query($sql, array($degisken1,$degisken2)); Doğrudan Query fonksiyonu kullanımında girdinin temizliği: mysql_real_escape_string($this->input->get(‘key’,TRUE)); 	ya da, "INSERT INTO table (title) VALUES(".$this->db->escape($key).")";
CI->Guvenlik_Onlemleri Yayın öncesi alınacak önlemler Varsayılan dizin yapısının ve adının değiştirilmesi : root system application root CI(eski system dizini) uygulama (eski system/application dizini) Root/index.php dosyası içindeki iki satır: $system_folder = “CI";// system_dizini_adı $application_folder = “uygulama"; //application_dizini_adı Çekirdeği değiştirdiğimiz dosyaların MY_ ön eklerinin değiştirilmesi: Application/config/config.php’de $config['subclass_prefix'] = ‘CI_';
CI->Guvenlik_Onlemleri Yayın öncesi alınacak önlemler Kodlamaya yardımcı fonksiyonların kapatılması Scaffolding kütüphanesi kullanıldıysa devre dışı bırakılmalı   $this->load->scaffolding('table_name'); Profiler kullanıldıysa kapatılmalı $this->output->enable_profiler(TRUE); Model, library ve diğer sonradan eklenen dosyaların başına güvenlik satırı ekleme: <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
CI->Guvenlik_Onlemleri Yayın öncesi alınacak önlemler Hata mesajlarının yönetimi Tüm hata mesajlarının ekrana bastırılması önlenmelidir: Root/index.php :  error_reporting(0); application/config/config.php:  $config['log_threshold'] = 1;  (system/logs dizinine yazma yetkisinin verilmesi gereklidir.) application/config/database.php:  $db['default']['db_debug'] = FALSE; 
CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri PHP4 desteği kalkıyor: PHP5’in tüm kullanışlı opsiyonları geliyor ( __construct, __deconstruct, __autoload vs) Bazı kütüphaneler kullanımdan kalkıyor: Scaffolding ve pluginler kaldırılıyor  (CAPTCHA plugin’i helper dosyasına dönüşüyor). Validation sınıfı tamamen kalkıyor, form_validation sınıfına destek genişleyerek sürüyor.
CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri Çekirdek sınıfların değiştirildiği dosyaların yeri değişiyor: MY_ ön ekli dokümanları application/core dizini altına kopyalanacak. Application paketleri eklenebiliyor: application/_common dizini altına farklı uygulamalarda ortak kullanılan dosyalar (model dosyaları gibi) kopyalanabilir.
CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri Driver sınıfları yazma opsiyonu geliyor: $this->load->driver('api'); $this->api->twitter->call('statuses/update', array('update' => 'Nice status!')); $this->api->facebook->get_friends(); $this->api->vimeo->get_videos($user); 	Jquery için yazılmış driver dosyası , CI 2.0 standart dağıtım paketine dahil edilmiştir.
CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri Veritabanına daha fazla kontrol geliyor: $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE; $db['default']['port'] = 5432;
CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri CSRF kontrolünün de eklendiği yeni Security sınıfı geliyor: Input, Upload ve XML-RPC sınıfları Security sınıfı ile daha güçlendiriliyor. XSS filtresinin yeri Security sınıfına kaydırılıyor.
CI->Sonuc Kullanım kolaylığı, hızı, anlaşılır kullanım kılavuzu ve PHP5 destekli yeni versiyonuyla yola devam eden CodeIgniter, PHP uygulama çatıları arasındaki yerini gelecekte de güçlendirmeyi istiyor.
CodeIgniter Semineri Teşekkürler. Fatih BAZMAN  codeigniter.gen.tr

More Related Content

Similar to Fatih BAZMAN CodeIgniter Sunumu

04 practical symfony 4дөх
04 practical symfony 4дөх04 practical symfony 4дөх
04 practical symfony 4дөхtuvshinmgl
 
第10章 存储过程与触发器
第10章 存储过程与触发器第10章 存储过程与触发器
第10章 存储过程与触发器hanmo1988
 
Entity+framework+
Entity+framework+Entity+framework+
Entity+framework+Rey zhang
 
Mini charla jquery
Mini charla jqueryMini charla jquery
Mini charla jquerylizardoceliz
 
可复制的前后端分离开发模式
可复制的前后端分离开发模式可复制的前后端分离开发模式
可复制的前后端分离开发模式taobao.com
 
Une application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuveUne application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuvePhilippe Gamache
 
我的Kissy学习笔记
我的Kissy学习笔记我的Kissy学习笔记
我的Kissy学习笔记satans17
 
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)Pedro Valera
 

Similar to Fatih BAZMAN CodeIgniter Sunumu (8)

04 practical symfony 4дөх
04 practical symfony 4дөх04 practical symfony 4дөх
04 practical symfony 4дөх
 
第10章 存储过程与触发器
第10章 存储过程与触发器第10章 存储过程与触发器
第10章 存储过程与触发器
 
Entity+framework+
Entity+framework+Entity+framework+
Entity+framework+
 
Mini charla jquery
Mini charla jqueryMini charla jquery
Mini charla jquery
 
可复制的前后端分离开发模式
可复制的前后端分离开发模式可复制的前后端分离开发模式
可复制的前后端分离开发模式
 
Une application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de MainsonneuveUne application en une heure avec symfony - Collège de Mainsonneuve
Une application en une heure avec symfony - Collège de Mainsonneuve
 
我的Kissy学习笔记
我的Kissy学习笔记我的Kissy学习笔记
我的Kissy学习笔记
 
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
Uso de la Programación para la Seguridad en Redes (a.k.a. Sockets y Shellcoding)
 

Fatih BAZMAN CodeIgniter Sunumu

  • 1. CodeIgniter SemineriKütüphane YazmaGüvenlik ÖnlemleriCodeIgniter 2.0 Özgür Web Teknolojileri Günleri 2010 Yeditepe Üniversitesi, Airties Salonu 16 Ekim 2010 (14:00 – 14:45) Fatih BAZMAN (http://codeigniter.gen.tr)
  • 2. CI->Basliklar CodeIgniter’ı nasıl zenginleştiririz? CodeIgniter’da güvenlik önlemleri CodeIgniter 2.0 ile neler değişecek?
  • 3. CI->Nasil_Zenginlestiririz Kendi yazdığımız kütüphane dosyalarını ekleyerek: Örnek: Hata mesajlarını gösteren kütüphane yazılması Görevi : Session kütüphanesi ile gelen hata mesajı dizisini ekrana css bilgileriyle bastırmak Dosya adı: Error.php Yeri : application/libraries/error.php
  • 4. CI->Nasil_Zenginlestiririz <?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * Error flashing library * @author Fatih Bazman : fatihbazman at gmail.com */ class Error { var $CI; function Error() { $this->CI =& get_instance(); log_message('debug', "Error Class Initialized"); } ......... Sonraki sayfada devam ediyor
  • 5. CI->Nasil_Zenginlestiririz ............. Önceki sayfadan devam ediyor function error_view() { if(is_array($this->CI->session->flashdata('msg'))) { $text = '<blockquote>'; foreach($this->CI->session->flashdata('msg') as $row): $text .= '<p>'.$row.'</p>'; endforeach; $text .= '</blockquote>'; return $text; } else if($this->CI->session->flashdata('msg')) { $text = '<blockquote><p>'.$this->CI->session->flashdata('msg').'</p></blockquote>'; return $text; }else return FALSE; } }
  • 6. CI->Nasil_Zenginlestiririz Kütüphanenin kullanımı: Yüklenmesi: application/config/autoload.php $autoload['libraries'] = array( 'session','error'); Çağrılması: application/controller/deneme.php $this->session->set_flashdata('msg', $this->form_validation->_error_array); application/views/deneme_view.php <?php echo $this->error->error_view()?>
  • 7. CI->Nasil_Zenginlestiririz Helper Dosyaları Yazarak: Yeri : application/helpers/error_helper.php Yüklenmesi : application/config/autoload.php $autoload['helper'] = array(‘error');
  • 8. CI->Nasil_Zenginlestiririz Helper Dosyası Yazılması: İçeriği: function error_view() { $CI =& get_instance(); return $CI->error->error_view(); } Kullanılması application/views/deneme_view.php <?php echo error_view()?>
  • 9. CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler CI güncel sürümünün takibi Kullanıcı girdilerinin kontrolü Yayın öncesi alınacak önlemler Varsayılan dizin yapısının ve adının değiştirilmesi Kodlamaya yardımcı fonksiyonların kapatılması Model, library ve diğer sonradan eklenen dosyaların başına güvenlik satırı ekleme Hata mesajlarının yönetimi
  • 10. CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler CI güncel sürümünün takibi: Geçerli sürüm: 1.7.2 (upload library patched) http://codeigniter.com/downloads/
  • 11. CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler Kullanıcı girdilerinin kontrolü: $_GET, $_POST, $_COOKIE, $_SERVER fonksiyonları yerine CI Input sınıfının kullanılması. (int) $this->input->get(‘page',TRUE); Xss önlemek amacıyla form girdilerinde kontrol. $this->form_validation->set_rules('key', 'Aramakriteri', 'trim|required|xss_clean|min_length[3]'); $this->input->get(‘page',TRUE)
  • 12. CI->Guvenlik_Onlemleri Kod yazarken alınacak önlemler Kullanıcı girdilerinin kontrolü: SQL injection önlemek amacıyla: Active Record kullanımı $this->db->get_where(‘posts’,array(‘user_id’ => $user_id)); Bind query kullanımı: $sql = 'select * from tabloadi where sutun1=? and sutun2=?'; $this->db->query($sql, array($degisken1,$degisken2)); Doğrudan Query fonksiyonu kullanımında girdinin temizliği: mysql_real_escape_string($this->input->get(‘key’,TRUE)); ya da, "INSERT INTO table (title) VALUES(".$this->db->escape($key).")";
  • 13. CI->Guvenlik_Onlemleri Yayın öncesi alınacak önlemler Varsayılan dizin yapısının ve adının değiştirilmesi : root system application root CI(eski system dizini) uygulama (eski system/application dizini) Root/index.php dosyası içindeki iki satır: $system_folder = “CI";// system_dizini_adı $application_folder = “uygulama"; //application_dizini_adı Çekirdeği değiştirdiğimiz dosyaların MY_ ön eklerinin değiştirilmesi: Application/config/config.php’de $config['subclass_prefix'] = ‘CI_';
  • 14. CI->Guvenlik_Onlemleri Yayın öncesi alınacak önlemler Kodlamaya yardımcı fonksiyonların kapatılması Scaffolding kütüphanesi kullanıldıysa devre dışı bırakılmalı   $this->load->scaffolding('table_name'); Profiler kullanıldıysa kapatılmalı $this->output->enable_profiler(TRUE); Model, library ve diğer sonradan eklenen dosyaların başına güvenlik satırı ekleme: <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
  • 15. CI->Guvenlik_Onlemleri Yayın öncesi alınacak önlemler Hata mesajlarının yönetimi Tüm hata mesajlarının ekrana bastırılması önlenmelidir: Root/index.php : error_reporting(0); application/config/config.php: $config['log_threshold'] = 1;  (system/logs dizinine yazma yetkisinin verilmesi gereklidir.) application/config/database.php: $db['default']['db_debug'] = FALSE; 
  • 16. CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri PHP4 desteği kalkıyor: PHP5’in tüm kullanışlı opsiyonları geliyor ( __construct, __deconstruct, __autoload vs) Bazı kütüphaneler kullanımdan kalkıyor: Scaffolding ve pluginler kaldırılıyor (CAPTCHA plugin’i helper dosyasına dönüşüyor). Validation sınıfı tamamen kalkıyor, form_validation sınıfına destek genişleyerek sürüyor.
  • 17. CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri Çekirdek sınıfların değiştirildiği dosyaların yeri değişiyor: MY_ ön ekli dokümanları application/core dizini altına kopyalanacak. Application paketleri eklenebiliyor: application/_common dizini altına farklı uygulamalarda ortak kullanılan dosyalar (model dosyaları gibi) kopyalanabilir.
  • 18. CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri Driver sınıfları yazma opsiyonu geliyor: $this->load->driver('api'); $this->api->twitter->call('statuses/update', array('update' => 'Nice status!')); $this->api->facebook->get_friends(); $this->api->vimeo->get_videos($user); Jquery için yazılmış driver dosyası , CI 2.0 standart dağıtım paketine dahil edilmiştir.
  • 19. CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri Veritabanına daha fazla kontrol geliyor: $db['default']['swap_pre'] = ''; $db['default']['autoinit'] = TRUE; $db['default']['stricton'] = FALSE; $db['default']['port'] = 5432;
  • 20. CI->Versiyon_2.0 Versiyon 2.0 ana değişiklikleri CSRF kontrolünün de eklendiği yeni Security sınıfı geliyor: Input, Upload ve XML-RPC sınıfları Security sınıfı ile daha güçlendiriliyor. XSS filtresinin yeri Security sınıfına kaydırılıyor.
  • 21. CI->Sonuc Kullanım kolaylığı, hızı, anlaşılır kullanım kılavuzu ve PHP5 destekli yeni versiyonuyla yola devam eden CodeIgniter, PHP uygulama çatıları arasındaki yerini gelecekte de güçlendirmeyi istiyor.
  • 22. CodeIgniter Semineri Teşekkürler. Fatih BAZMAN codeigniter.gen.tr