CODEIGNITER SEMINERI KÜTÜPHANE YAZMA GÜVENLIK ÖNLEMLERI CODEIGNITER 2.0



Benzer belgeler
PHP CodeIgniter MVC Framework

PHP ile İnternet Programlama

BLG4134 Görsel Programlama III. Öğr. Grv. Aybike ŞİMŞEK

PHP+Memory Cache+PostgreSQL Kullanarak Performanslı Veritabanı Uygulaması Geliştirme

Web Uygulama Güvenliği Kontrol Listesi 2010

Bölüm 10: PHP ile Veritabanı Uygulamaları

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Ç NDEK LER 1 PHP 6 1 PHP Nedir? 1 PHP nin Tarihi 2 PHP nin Avantajlar 4 PHP nin Dezavantajlar 4 PHP nin Çal flma Mant 6 PHP nin Çal flma Aral 8 PHP

VERİ GÜVENLİĞİ. Web Uygulamaları Güvenliği. Özer Çelik Matematik-Bilgisayar Bölümü

İnternet Programcılığı

1.7X.xx VERSĐYONUYLA BĐRLĐKTE YAPILACAKLAR

WEB UYGULAMA GÜVENLİĞİ HAKKINDA. Mesut Güngör İzmir Yüksek Teknoloji Enstitüsü Bilgi İşlem Daire Başkanlığı

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

Excel de Düşeyara Vlookup) Fonksiyonunun Kullanımı

PHP (II) Formlar. Dosya İşlemleri. 2002, Sanem SARIEL PHP Ders Notları 2 1. Formlar

ASP.NET CLASS KULLANARAK VERİTABANI İŞLEMLERİ

MySqlConnection connection; MySqlCommand command; MySqlDataReader reader; MySqlDataAdapter adapter; DataTable table;

Web 2.0 Örnek Eğitim Notu

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

E-Defter Oluşturma Aşamasında Sık Karşılaşılan Uyarı Mesajları Ve Çözümleri

jquery kütüphanesini sayfaya eklemek için iki yöntem vardır. 1. Direkt jquery nin sitesinden ekleme

DESTEK DOKÜMANI. Ürün : GO/TIGER2/UNITY2 Bölüm : Sistem Đşletmeni

ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.

Yukarıdaki örnekte görüldüğü üzere her php komut satırı noktalı virgül (;) ile biter.

Windows Sürüm 5.0 Standart Raporlarının NDER ile Bütünleşik Çalıştırılması

PostgreSQL ve PL/pgSQL

WEB PROGRAMLAMA. PHP Temelleri 2. Dr. Erman Yukselturk

Php İle Mysql Veritabanından Bilgi Çekme

CSRF (XSRF, Cross Site Request Forgery Cross Site Reference Forgery ) Nedir? Nasıl Kullanılır? ve Nasıl Korunulur?

SELÇUK ÜNİVERSİTESİ BOZKIR MESLEK YÜKSEKOKULU VERİTABANI-II DERSİ FİNAL SINAVI

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

Öğr. Gör. Serkan AKSU 1

Android Ders Notları

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Basit bir web uygulaması

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

T.C. SAKARYA ÜNİVERSİTESİ ADAPAZARI MESLEK YÜKSEKOKULU WEB TABANLI VERİ TABANI UYGULAMASI YÖNLENDİRİLMİŞ ÇALIŞMA. Enes Al 1027.

TRAKYA BİRLİK WEBSİTE YÖNETİM PANELİ. Kullanıcı Dokümantasyonu

KULLANICI TANIMLI FONKSİYONLAR (Devam)

Upgrading Internet Technology skills of Information and Communication Technologies (ICT) Professionals

MOBİL UYGULAMA GELİŞTİRME

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

BİLGİSAYAR PROGRAMLAMA DERSİ

PostgreSQL ve PL/pgSQL

İNTERNET PROGRAMCILIĞI DERSİ

BİL-142 Bilgisayar Programlama II

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Cite While You Write özelliği

İÇİNDEKİLER. İçindekiler. Web Uygulama Güvenliği Örnek Kaynak Kod Analizi

ASP.NET 1. DURUM YÖNETİMİ. BLM 318 e-ticaret ve Uyg. Durum Yönetimi Nedir? Durum Yönetimi: Karșılaștırma İÇERİK. Sunucu-taraflı Durum Yönetimi

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Kaynak Kod Güvenliği Bir Güvensiz API Örneği

KANTAR UYGULAMASI Kurulum Kılavuzu

ERP Ara Sürüm Duyurusu

Laravel 4 Türkçe Dokümantasyon (v. 4.1) (Ücretsiz)

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Bu makalede 2003 sunucu, Windows 2003 Server anlamına gelmektedir. Aşağıda yapılan işlemler 2003 R2 sunucu üzerinde denenmiş ve çalıştırılmıştır.

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

E-Firma Rehberi Sistemi Plus

yeni_uye_kayit.ascx UserControl sayfamızda, kaydedilmek istenen üye eğer daha önce veritabanımızda kayıtlı ise bunu buldurup kullanıcıyı uyaralım;

WEB TASARIMININ TEMELLERİ

WEB PROGRAMLAMA II. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Microsoft SQL Server 2008 Oracle Mysql (Ücretsiz) (Uygulamalarımızda bunu kullanacağız) Access

Ç NDEK LER G R fi 1 Bafllamadan Önce 1 Kitab Kimler Okumal? 1 Kitap çerisindeki Örnekler 2 Örneklerin Kullan m 3 Çekinmeden Yaz n 7

OMÜ HAVACILIK VE UZAY BİLİMLERİ FAKÜLTESİ METEOROLOJİ MÜHENDİSLİĞİ BÖLÜMÜ MET103 BİLGİSAYAR PROGRAMLAMA I BÜTÜNLEME SINAVI

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

TEMEL EXCEL. 1 - Excel e Giriş

Mysql Klası Kullanılarak Yapılan Öğrenci Kayıt Uygulaması

MIRACLE DATA WORKS KURULUM DOKÜMANI

Web Uygulama Pentest Eğitimi

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

ORT3167 İnternet Programcılığı 1 Ders1-2. Öğr. Grv. Aybike ŞİMŞEK

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Mendeley Eğitim. Sunanın Adı :Kocaeli Üniversitesi Kütüphane ve Dokümantasyon Daire Başkanlığı Sunu Tarihi : 2016

AJAX WITH JQUERY. Ajax Hikayesi MODULE 11

JAVASCRIPT JAVASCRIPT DİLİ

Netsis Cari Muhasebe Açıklama Kayıtları

Fatura Dinamik Kodlama İyileştirmeleri

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

1 APACHE SERVER KURULUMU 1 Kurulum 1 Apache Ayarları (httpd.conf) 6 PHP Ayarlaları (php.ini) 7 PHP5.4 Yükseltme 8 phpmyadmin Yükseltme 10

1.PROGRAMLAMAYA GİRİŞ

Oracle da kullanılan veri tipleri:

ADO.NET VERİTABANINA BAĞLANTI. Bir web formu üzerinden veritabanına bağlantımızı anlatacağım. UYGULAMA 1

R ile Programlamaya Giriş ve Uygulamalar

EFe Event Management System

VERİ TABANI ve YÖNETİMİ

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

İSTANBUL RUMELİ ÜNİVERSİTESİ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI 1.SINIF 2.YARIYIL İNTERNET PROGRAMCILIĞI II DERS İZLENCESİ

PHP ile İnternet Programlama

WeldEYE. Kurulum Kılavuzu. İçindekiler

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

Bigisayar Programlama

EXISTS VE NOT EXISTS fonksiyonları

Transkript:

CODEIGNITER SEMINERI KÜTÜPHANE YAZMA GÜVENLIK ÖNLEMLERI CODEIGNITER 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', 'Arama kriteri', '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