İçeriğe atla

PHP

Vikipedi, özgür ansiklopedi
PHP
Paradigmasıçok paradigmalı:zorunlu,nesne yönelimli,yordamsal,yansıtıcı
İlk çıkışı8 Haziran 1995(29 yıl önce)(1995-06-08)
TasarımcıRasmus Lerdorf
GeliştiriciPHP Grubu,Zend Technologies,PHP Foundation
Kararlı sürüm8.3.2 (18 Ocak 2024(7 ay önce)(2024-01-18))
Önemli uygulamalarıZend Engine,Phalanger,Quercus,Project Zero,HipHop
EtkilendikleriC,Perl,Java,C++,Tcl
EtkiledikleriPhp4delphi,HackJSP,ASP
Uygulama diliC
Platformuçapraz platform
LisansPHP Lisansı
Olağandosya uzantıları.php,.phar,.phtml,.pht,.phps
Web sitesiphp.net
LAMP,Squid(yazılım)

PHP:HypertextPreprocessor (Türkçe:Üstünyazı Önişlemcisi[1]) (Aslen: Personal Home Page - Kişisel Ana Sayfa),internetiçin üretilmiş,sunucutaraflı, çok geniş kullanımlı, genel amaçlı, içerisineHTMLgömülebilenbetikveprogramlamadilidir.[1]İlk kez 1995 yılındaRasmus Lerdorftarafından yaratılan PHP'nin geliştirilmesi bugün PHP topluluğu tarafından sürdürülmektedir. Ocak 2013 itibarıyla 244 milyondan fazlawebsitesi PHP ile çalışırken 2.1 milyonweb sunucusundaPHP kurulumu bulunmaktadır.[2]

PHP kodları PHP işleme modülü bulunan bir web sunucusu tarafından yorumlanır ve çıktı olarak web sayfası üretilir. Bu kodlar veriyi işlemek üzere harici bir dosyaya kaydedilerek çağırılabildiği gibi doğrudanHTMLkodunun içine de gömülebilir. PHP zaman içinde birkomut satırıarayüzü sunacak şekilde evrilmiştir,PHP-GTKyardımıyla grafiksel masaüstü uygulaması geliştirmek de mümkündür.[3]

PHP özgür biryazılımolupPHP Lisansıile dağıtılmaktadır. Bu lisans kullanım şartları kısmındaGNU Genel Kamu Lisansıile örtüşmese de, PHP tüm web sunuculara ve hemen hemen tüm işletim sistemi ve platforma ücretsiz olarak yüklenebilir.[4]

PHP'nin geliştirilmesi 1994 yılındaRasmus Lerdorf'un kişisel web sitesini yönetmek için bir takım CGI (İngilizce:Common Gateway Interface)Perlbetikleri yazmasıyla başladı. Rasmus bu betikler yardımıyla özgeçmişini sitede görüntülüyor ve sitenin ziyaretçi trafiğini kaydediyordu. Bir süre sonra web formları ile etkileşime girebilecek, veritabanları ile iletişim kurabilecek ve daha hızlı çalışabilecek şekilde bu betikleri C ile yeniden kodladı ve bu uygulamayaKişisel Ana Sayfa/Form Yorumlayıcı(PHP/FI,İngilizce: Personal Home Page/Forms Interpreter) adını verdi.PHP/FIyardımıyla basit anlamda dinamik web siteleri oluşturmak oldukça kolaydı. Rasmus, 8 Haziran 1995 tarihinde hata ayıklama sürecini hızlandırmak vekaynak koduiyileştirmek üzere birUsenettartışma grubunda PHP/FI uygulamasınıPersonal Home Page Tools(PHP Tools) adıyla ilk kez duyurdu. 2013 yılı itibarıyla PHP içinde mevcut olan Perl benzeri değişken tanımlama, form yönetimi ve betik kodları arasınaHTMLkodu yerleştirebilme gibi temel özellikler bu ilk sürümde de mevcuttu.Sözdizimigenel olarak Perl'e benzese de daha kısıtlı ve basit ancak daha tutarsızdı. Bir geliştirme takımıyla aylar süren çalışma ve test aşamalarının ardından PHP/FI 2 sürümü 1997 Kasım ayında resmi olarak duyuruldu.

Zeev SuraskiveAndi Gutmans1997 yılındaayrımlayıcı'yıbaştan yazdılar ve dilin ismini PHP: Hypertext Preprocessor olarak değiştirerek PHP 3 ün temellerini attılar. Bunu PHP 3 ün herkese açık olan test sürecinin başlaması izledi ve 1998 yılının Haziran ayında PHP 3 resmi olarak duyuruldu. Suraski ve Gutmans bu sürecin ardından PHP'nin çekirdeğini sil baştan kodlamak suretiyle 1999 yılında Zend Motorunu geliştirdiler ve İsrail'inRamat GankentindeZend Technologiesisimli bir şirket kurdular.[5]

22 Mayıs 2000 tarihinde temelleri Zend Engine 1.0 ile güçlendirilmiş PHP 4 duyuruldu ve Ağustos 2008 itibarıyla 4.4.9 sürümüne ulaşana kadar aktif olarak geliştirildi.[6]Bugün PHP 4'ün geliştirilmesi durdurulmuştur ve güvenlik güncellemeleri dahil olmak üzere üzerinde hiçbir iyileştirme yapılmamaktadır.

13 Temmuz 2004 tarihinde yeni Zend Engine II ile güçlendirilmiş PHP 5 yayınlandı. PHP 5,nesneye yönelik programlamaiçin çok daha fazla olanak sağlıyor, PHP Veri Nesneleri (PDO) eklentisi yardımıyla veritabanlarına erişim için oldukça tutarlı ve hızlı bir arayüz yanında performansa yönelik çok sayıda iyileştirme barındırıyordu.[7]2008 yılında PHP 4 ün tutarlı sürümünün yayınlanması durduruldu ve PHP 5 geliştirilmesi devam eden tek tutarlı sürüm oldu. PHPduruk içselleştirim(İngilizce: Late static binding) özelliği barındırmıyordu ancak 5.3 sürümü ile bu önemli eksik giderildi.[8]

Sürüm geçmişi

[değiştir|kaynağı değiştir]
Anlamı
Kırmızı Artık desteklenmeyen sürüm
Sarı Yalnızca güvenlik düzeltmeleri alan sürüm
Yeşil Aktif olarak desteklenen sürüm
Mavi Gelecek sürüm ya daBETA,ALFAsürüm
Ana Sürüm Ek Sürüm Yayın Tarihi Notlar
1 1.0.0 1995-06-08 "Personal Home Page Tools (Kişisel Anasayfa Araçları)" olarak anılıyordu ve kısaltımı "PHP" idi.
2 2.0.0 1997-11-01 Yaratıcısıvegeliştiricisi"en hızlı ve en sade araç" olarak,web sayfalarıiçin geliştirdi.
3 3.0.0 1998-06-06 Sürüm kişisellikten, kurumsallığa geçti.Zeev SuraskiveAndi Gutmanstekrar basit dil bilgisini yazdı.
4 4.0.0 2000-05-22 Daha ileri seviye dil bilgisi eklendi / Zend Motoru denilen dil bilgisi denetleyicisi getirildi.
4.1.0 2001-12-10 'Süper globaller' tanıştırıldı. ($_GET,$_POST,$_SESSION,$_SERVERvb...)
4.2.0 2002-04-22 register_globals öntanımlı olarak engellendi.
4.3.0 2002-12-27 CLItanıştırıldı,CGIekleri yapıldı.
4.4.0 2005-07-11 phpizevephp-configbetikleri için eklenmeler yapıldı.
4.4.8 2008-01-03 Çoğu güvenlik sorunları ve hatalar düzeltildi. Son kalıcı PHP 4 sürümü oldu. Gerekli ise, güvenlik güncellemeleri 2008-08-08 e kadar sürdü.
4.4.9 2008-08-07 Daha fazla açık onarıldı. PHP 4 serileri için son sürüm oldu.
5 5.0.0 2004-07-13 Zend Motoru II ile yeni obje modelleri geliştirildi.
5.1.0 2005-11-24 Eklenen değişkenler ile performans artışı gözlemlendi.
5.2.0 2006-11-02 Filtreleme öntenımlı olarak iptal edildi.
5.2.11 2009-09-16 Hata ve güvenlik sorunları çözüldü.
5.2.12 2009-02-25 Güvenlik ve veri tabanı iletişimi güçlendirildi. 60 adet hata düzeltildi.
5.2.13 2010-07-22 Hatalar düzeltildi.
5.2.14 2010-12-17 Hatalar düzeltildi. PHP 5.2.x sürümleri geliştirilmesi durduruldu.
5.3.0 2009-06-30 Namespacedesteği, Atlama kodları (gotoile limitlendi), Yerli PHP arşivlemesi (phar),Windowsdesteği arttırıldı, sqlite3 geliştirildi, fileinfo, mime_magic yerine daha iyi birMIMEdesteği için getirildi, uluslararası olarak "ereg"kod yapısı iptal edildi.
5.3.1 2009-11-19 100'den fazla hata düzeltildi, bazı küçük sorunlar da düzeltildi.
5.3.2 2010-03-04 Çok geniş bir hata düzeltimi yapıldı.
5.3.3 2010-07-22 Başlıca hata ve güvenlik sorunları onarıldı.FPM[ölü/kırık bağlantı]
5.4 2012-03-01 Trait desteği geldi, diziler için kısa sözdizimi desteği geldi. Register_globals, safe_mode, allow_call_time_pass_reference konfigürasyon değerleri session_register(), session_unregister() ve session_is_registered() metotları ile birlikte kaldırıldı. Dahili web sunucu desteği eklendi. Bellek kullanımı düşürüldü, mevcut fonksiyonelite üzerinde performansı artıran çok sayıda iyileştirme yapıldı.
5.5 2013-06-20 Yeni makine kodu önbellekleme eklentisi (Zend Optimizer+) geldi. GD resim işleme kütüphanesine yeni fonksiyonlar eklendi. Parola şifreleme işlemlerini kolaylaştırmak ve daha üst seviyede güvenlik sunmak üzere password_hash() ve password_verify() metotları geldi. try {} catch() {} sözdizimine diğer üst seviye dillerde bulunan finally bloğu eklendi.
5.6 2014-08-28 Belirsiz sayıda parametre alan fonksiyonlar (variadic functions), sabitlere (const) numerik işlemlerle (+, -, *...) tanım yapabilme, üs alma operatörü (**) eklendi.
7 7.0 2015-12-03 Zend Engine 3.0ile önceki sürümlere göre performansı önemli derecede arttırıldı.[9]?? Operatörü,<=>üç yollu karşılaştırma operatörü ve anonymous sınıflar eklendi.Unicodedesteği geldi.
7.1 2016-12-01 Void tipieklendi, sınıf sabitlerini (const)kapsülleme,boşaltılabilir (nullable) tip, birden fazla hata (exception handling) yakalayabilme.[10]
7.2 2017-11-30 Object tipieklendi, abstract metodlar artık override edilebiliyor.[11]
7.3 2018-12-06 is_countable fonsiyonu, Esnek Heredoc ve Nowdoc Sözdizimleri[12]
7.4 2019-11-28 Ok fonksiyon, ön yükleme, sınıflarda tip özelliği, geliştirilmiş tip varyansları, dizilerde dağıtma operatoru, null işaretleme operatörü[13]
8 8.0 2020-12-3 İsimli parametreler,uniontürleri, nitelikler,constructornitelik promosyonu,nullsafeoperatörü,matchifadesi, JIT(Just in Time),statictüründe değer döndürme,mixedtürü,throwifadesi, nesnelerde::classsözdizimi,try-catchsözdiziminin hata değişkeni belirtmeden kullanımı, parametre listelerinin sonunda virgül kullanımı,stringdeğişkenlerde otomatikStringablearayüze geçiş,str_contains()fonksiyonu,str_starts_with()vestr_ends_with()fonksiyonları,stringbirleştirme önceliği.[14][15]
8.0.1 2021-01-07 Bazı hatalar giderildi.[16]
8.0.2 2021-02-04 Bazı hatalar giderildi.[17]
8.1.0 2021-11-25[18] Sayılama (İngilizce: enum) desteği eklendi.[19]
8.2.0 2022-12-08[20] Sadece okunabilir sınıflar (İngilizce: Readonly classes) eklendi.[21]
8.3.2 2024-01-18[22] Sınıf sabitlerinin açıkça yazılması, salt okunur özelliklerin derinlemesine klonlanması ve rastgelelik işlevine yapılan eklemeler gibi birçok yeni özellik içerir. Her zaman olduğu gibi performans iyileştirmeleri, hata düzeltmeleri ve genel temizlik de içeriyor.

PHP, özellikleMySQLveritabanıyla birlikte veLinuxişletim sistemi altında iyi bir performans sergilemektedir.C/C++diline olan benzerliği nedeniyle bu dili önceden bilenlerin PHP öğrenmesi oldukça kolaydır. Kolay öğrenilmesi ve hızlı performansı nedeniyleFacebook,YouTube,Yahoo,WikipediaveOGamegibi dünyaca ünlü sitelerin yazımında kullanılmasına rağmen, kodların kolay anlaşılabilmesi açısından ve birden fazla programcı tarafından sürekli geliştirilmesi gerekli büyük projelerdeJava'nınkullanılması daha uygun görülmektedir. Ancak sadece web tabanlı yazılımın geliştirilmesi söz konusu olduğundaJava'yagöre öğrenilmesinin daha kolay olması nedeniyle genellikle PHP tercih edilmektedir. PHP, web tasarımında önemli kolaylıklar sağlasa da 2005 teGoogleinAJAXkullanmaya başlamasından sonra tek başına öğrenilmesi yeterli olmamakta veAJAX'ı öğrenmek için gerekliJavaScript,XML,HTML,(veCSS) ile birlikte bir bütün oluşturabilmektedir.

Önemli PHP Geliştiricileri
Rasmus Lerdorf Andi Gutmans Zeev Suraski
Danimarka asıllıKanadalı,programcı.PHP'nin mucidi vegeliştiricisi.2002'den beriYahooŞirketiiçin çalışmakta. Aynı zamandaApache HTTP Sunucusuprojesininbaşlamasını sağladı.Joomla!gibiGNUPHPprojeleringüvenliğinikontrol ediyor. İsrailasıllıprogramcı.PHP'nin gelişmesinde çokbüyükemeğiolmuştur. Aynı zamandaZend Motoruhakkındakiçalışmalarıçok önemlidir. İsrailasıllıprogramcı.Zend Motorunuicat etti. PHP için birbetikmotoruveaktifderleyicioluşturdu.

Aşağıdakiörnek programdaHTML içerisine gömülü PHP kodunu görebilirsiniz.

<!DOCTYPE html>
<html>
<head>
<title>PHP Testi</title>
</head>
<body>
<?phpecho'<p>Merhaba Dünya</p>';?>
</body>
</html>

Unutmayın ki PHP kodunun HTML içerisinde gömülü olması zorunlu değildir. Benzeri birprogramaşağıdaki gibi yazılabilir.

<?='Hello world'?>

PHP yazılımı büyük bir fonksiyon kütüphanesi ile birlikte gelir. Gömülü fonksiyonların haricinde kendi fonksiyonunuzu aşağıdaki gibi tanımlayabilirsiniz.

<?php
functionyasimiGetir($dogumYili){
$yas=date('Y')-$dogumYili;
return$yas;
}

echoyasimiGetir(1981).' yaşındayım.';
?>
<?php
functiontopla($a,$b){
return$a+$b;
}

echotopla(5,10);//15
?>
LAMP yazılım paketine genel bir bakış, buradaSquidile birlikte gösterilmektedir

PHP, özellikle sunucu taraflı web geliştirmeye uygun genel amaçlı bir kodlama dilidir; bu durumda PHP genellikle bir web sunucusunda çalışır. İstenen dosyadaki herhangi bir PHP kodu, genellikle dinamik web sayfası içeriği veya web sitelerinde veya başka yerlerde kullanılan dinamik görüntüler oluşturmak için PHP çalışma zamanı tarafından yürütülür.[23]Ayrıcakomut satırıkomut dosyaları oluşturma ve istemci tarafıgrafik kullanıcı arabirimi(GUI) uygulamaları için de kullanılabilir. PHP çoğu web sunucusuna, birçokişletim sistemineveplatformadağıtılabilir ve birçokilişkisel veritabanıyönetim sistemi (RDBMS) ile kullanılabilir. Çoğuweb barındırmasağlayıcısı müşterileri tarafından kullanılmak üzere PHP'yi destekler. Ücretsiz olarak mevcuttur ve PHP Grubu, kullanıcıların kendi kullanımları için oluşturmaları, özelleştirmeleri ve genişletmeleri için eksiksiz kaynak kodu sağlar.[24]

Dinamik web sayfası: sunucu tarafı komut dosyası oluşturma örneği (PHP ve MySQL)

Başlangıçta dinamikweb sayfalarıoluşturmak için tasarlanan PHP, artık esas olarak sunucu tarafı komut dosyası yazmaya odaklanmaktadır[25]vePython,Microsoft'unASP.NET,Sun Microsystems'inJavaServer Pages,[26]vemod_perlgibi web sunucusundan istemciye dinamik içerik sağlayan diğer sunucu tarafı komut dosyası dillerine benzer.

PHP ayrıca hızlı uygulama geliştirmeyi (RAD) teşvik etmek için yapı taşları ve tasarım yapısı sağlayan birçokyazılım çerçevesiningeliştirilmesini de kendine çekmiştir. Bunlardan bazıları PRADO,CakePHP,Symfony,CodeIgniter,Laravel,Yii Framework,Phalconve Laminas'tır ve diğerweb çerçevelerinebenzer özellikler sunar.

LAMPmimarisi, web uygulamalarını dağıtma yolu olarak web endüstrisinde popüler oldu.[27]PHP, bu paketteLinux,ApacheveMySQLile birliktePolarak çok kullanılır ancak P aynı zamandaPython,Perlveya üçünün bir karışımını da ifade edebilir. Benzer paketler,WAMPve MAMP,WindowsvemacOSiçin de vardır ve ilk harf ilgili işletim sistemini temsil eder. Hem PHP hem de Apache, macOS temel kurulumunun bir parçası olarak sağlansa da, bu paketlerin kullanıcıları, daha kolay güncel tutulabilecek daha basit bir kurulum mekanizması aramaktadır.

Belirli ve daha gelişmiş kullanım senaryoları için PHP,CveyaC++dilinde özel uzantılar yazmak için iyi tanımlanmış ve belgelenmiş bir yol sunar.[28][29][30][31][32][33][34]Uzantılar, dilin kendisini ekkitaplıklarbiçiminde genişletmenin yanı sıra, kritik olduğu durumlarda yürütme hızını artırma yolunu sağlar ve gerçek bir derlenmiş dil kullanarak iyileştirmelere yer vardır.[35][36]PHP ayrıca kendisini diğer yazılım projelerine dahil etmek için iyi tanımlanmış yollar sunar. Bu şekilde PHP, başka bir proje için dahili birkodlama diliolarak kolayca kullanılabilir ve aynı zamanda projenin belirli dahiliveri yapılarıylasıkı bir arayüz sağlar.[37]PHP, çekirdek dil düzeyinde çokluiş parçacığıdesteğinin bulunmaması nedeniyle karışık eleştiriler aldı, ancak iş parçacıklarını kullanmak "pthreads"PECLuzantısı tarafından mümkün kılındı.[38][39][40]

PHP için bir komut satırı arayüzü, php-cli ve ikiActiveXWindows Komut Dosyası Ana Bilgisayarı komut dosyası oluşturma motoru üretildi.

Popülerlik ve kullanım istatistikleri

[değiştir|kaynağı değiştir]

PHP,MediaWiki,[41]WordPress,[42]Joomla!,[43]Drupal,[44]Moodle,[45]eZ Publish, eZ Platform ve SilverStripe dahil olmak üzere Web içerik yönetim sistemlerinde kullanılır.[46]

28 Ocak 2024'teki PHP sürümlerinin kullanım payı[47][48][49][50][51]

PHP 8.3 (%0.19)
PHP 8.2 (%3.80)
PHP 8.1 (%9.34)
PHP 8.0 (%10.59)
PHP 7.4 (%39.93)
PHP 7.3 (%8.11)
PHP 7.2 (%5.82)
PHP 7.1 (%2.59)
PHP 7.0 (%2.35)
PHP 5.6 (%9.23)
PHP 5.5 (%2.65)
PHP 5.4 (%2.55)
PHP 5.3 (%1.44)
PHP 5.2 (%1.18)
PHP 5.1 (%0.07)

Ocak 2013 itibarıyla PHP 240 milyondan fazlaweb sitesindekullanılmış (örneklenenlerin %39'u) ve 2,1 milyonweb sunucusunakurulmuştur.[52]

28 Ocak 2024 tarihi itibarıyla (PHP 8.3'ün yayınlanmasından 2 ay sonra), dilin belirlenebildiği web sitelerinin %76,5'inde sunucu tarafı programlama dili olarak PHP kullanılmaktadır; PHP 7, dilin en çok kullanılan sürümüdür; PHP kullanan web sitelerinin %58,8'i bu sürümü kullanırken, %23,9'u PHP 8 ve %17,1'i PHP 5 kullanmaktadır.[47]

2019'da Ulusal Güvenlik Açığı Veritabanı tarafından listelenen tüm güvenlik açıklarının %11'i PHP ile bağlantılıydı.[53]Tarihsel olarak, 1996'dan bu yana bu veri tabanında listelenen tüm güvenlik açıklarının yaklaşık %30'u PHP ile bağlantılıdır. Dilin kendisinin veya çekirdek kitaplıklarının teknik güvenlik kusurları sık görülen bir durum değildir (2009'da 22, toplamın yaklaşık %1'i, ancak PHP listelenen programların yaklaşık %20'si için geçerlidir).[54]Programcıların hata yaptığını kabul eden bazı diller, birçok soruna neden olan girdi doğrulama eksikliğini otomatik olarak tespit etmek için hata kontrolü içerir. Böyle bir özellik PHP için geliştirilmektedir,[55]ancak bunun bir sürüme dahil edilmesi geçmişte birkaç kez reddedilmiştir.[56][57]

Web barındırma ortamları için özel olarak tasarlanmış Suhosin ve Hardening-Patch gibi gelişmiş koruma yamaları bulunmaktadır.[58]

Geçmişte, PHP'nin eski sürümlerinde bazı yapılandırma parametreleri ve bu tür çalışma zamanı ayarları için varsayılan değerler vardı, bu da bazı PHP uygulamalarını güvenlik sorunlarına açık hale getiriyordu. Bunlar arasındamagic_quotes_gpcveregister_globals[59]yapılandırma direktifleri en iyi bilinenleriydi; ikincisi, herhangi birURLparametresinin PHP değişkenleri haline gelmesini sağladı ve bir saldırganın herhangi bir başlatılmamış global değişkenin değerini ayarlamasına ve bir PHP betiğinin yürütülmesine müdahale etmesine izin vererek ciddi güvenlik açıklarına yol açtı. "magic quotes" ve "register globals" ayarları desteği PHP 5.3.0'dan beri kullanımdan kaldırılmış ve PHP 5.4.0'dan silinmiştir.[60]

Çalışma zamanı ayarları olası güvenlik açığına başka bir örnek, yüklenen dosyaların depolandığı dizin için PHP yürütmesinin devre dışı bırakılmamasından (örneğinengineyapılandırma direktifi kullanılarak)[61]kaynaklanır. Bunun etkinleştirilmesi, yüklenen dosyalara yerleştirilmiş kötü amaçlı kodun yürütülmesine neden olabilir.[62][63][64]En iyi uygulama, görüntü dizinini web sunucusunun kullanabileceği belge kökünün dışına yerleştirmek ve onu bir aracı komut dosyası aracılığıyla sunmak veya yüklenen dosyaları saklayan dizin için PHP yürütmesini devre dışı bırakmaktır.

Ayrıca, paylaşılan bir web barındırma ortamında PHP uzantılarının dinamik yüklenmesini etkinleştirmek (enable_dlyapılandırma yönergesi aracılığıyla)[65]güvenlik sorunlarına yol açabilir.[66][67]

Bazen programcının amacına aykırı olarak farklı değerlerin eşit olarak değerlendirilmesine neden olan ima edilen tip dönüşümleri güvenlik sorunlarına yol açabilir. Örneğin,'0e1234' == '0'karşılaştırmasının sonucutrue'dur çünkü sayı olarak ayrıştırılabilen dizeler sayılara dönüştürülür. Bu durumda, ilk karşılaştırılan değer sıfır olan (0×101234) değerlibilimsel gösterimolarak kabul edilir. Bunun gibi hatalarMD5şifre karmalarıkarşılaştırıldığındaSimple Machines Forum,[68]TYPO3[69]vephpBB[70]'de kimlik doğrulama açıklarına neden oldu. Önerilen yol,ha bắn quals()(zamanlama saldırısıgüvenliği için),strcmpveya kimlik operatörünü (===) kullanmaktır çünkü'0e1234' === '0'falseile sonuçlanır.[71]

Zone-Htarafından yayınlanan 170.000'den fazlaweb sitesi tahrifatınıkapsayan 2013 analizinde en sık kullanılan teknik (%53), çoğunlukla PHP dil yapılarınıninclude,requireveallow_url_fopen'ın güvensiz kullanımıyla ilgili olan dosya ekleme güvenlik açığından yararlanılmasıydı.[72][73]

23 Aralık 2023 itibarıyla (PHP 8.3 sürümünden 1 ay sonra) W3Techs, PHP kullanan web sitelerinin %85,9'unun 8.0 veya daha eski sürümleri kullandığını (bunlar artık PHP Geliştirme Ekibi tarafından desteklenmemektedir) bildirmektedir.[74]

23 Aralık 2023 itibarıyla Sürüm 5 hâlâ tüm web sitelerinin %13,6'sı tarafından kullanılmaktadır.[49]PHP 8.1 veya sonraki sürümlere geçiş yapılması verand()[75]veyamt_rand(),[76],yerinerandom_int()[77]kullanılması önemle tavsiye edilmektedir çünkü bu işlevler kriptografik açıdan güvensizdir. PHP entropi kaynakları üzerinden gerçekleştirilebilecek iki saldırı vardır: "tohum saldırısı" ve "durum kurtarma saldırısı". Mevcut GPU teknolojileriyle bir saldırgan, 250ABDdoları tutarındaki GPU ile saniyede 230'a kadar MD5 hesaplaması gerçekleştirebilirken, ek 500 ABD doları tutarındaki GPU ile 232'ye kadar hesaplamaya ulaşabilir.[78]

"Doğum günü akını"ile birlikte bu durum ciddi güvenlik açıklarına yol açabilir.

Ayrıca bakınız

[değiştir|kaynağı değiştir]
Vikikitap
Vikikitap
Vikikitaptabu konu hakkında daha fazla bilgi var:
  1. ^ab"PHP Resmî Web Sitesi".9 Mart 2011 tarihindekaynağındanarşivlendi.Erişim tarihi: 25 Eylül 2010.
  2. ^"PHP Kullanım İstatistikleri, Ocak 2013 (İngilizce)".31 Mayıs 2016 tarihinde kaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  3. ^"PHP Neler Yapabilir? (İngilizce)".2 Haziran 2016 tarihinde kaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  4. ^"GPL-Incompatible Free Software Licenses (İngilizce)".28 Mayıs 2016 tarihinde kaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  5. ^"History of PHP (İngilizce)".4 Mart 2016 tarihindekaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  6. ^"PHP 4 Dead, Long Live PHP 5 (İngilizce)".24 Mart 2016 tarihindekaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  7. ^"Why PHP 5 Rocks (İngilizce)".31 Mart 2016 tarihinde kaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  8. ^"Late Static Binding In PHP (İngilizce)".4 Aralık 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 6 Eylül 2013.
  9. ^"Arşivlenmiş kopya".14 Nisan 2016 tarihindekaynağındanarşivlendi.Erişim tarihi:6 Mart2016.
  10. ^"PHP 7.1 New features".php.net. 14 Nisan 2017 tarihinde kaynağındanarşivlendi.Erişim tarihi: 4 Mayıs 2017.
  11. ^"PHP 7.2 New features".php.net. 9 Ağustos 2018 tarihinde kaynağındanarşivlendi.Erişim tarihi: 10 Ağustos 2018.
  12. ^"PHP 7.3 New features".php.net. 12 Ocak 2020 tarihinde kaynağındanarşivlendi.Erişim tarihi:14 Ocak2020.
  13. ^"PHP 7.4 New features".php.net. 12 Ocak 2020 tarihinde kaynağındanarşivlendi.Erişim tarihi:14 Ocak2020.
  14. ^"Arşivlenmiş kopya".18 Mayıs 2020 tarihindekaynağındanarşivlendi.Erişim tarihi: 17 Mayıs 2020.
  15. ^"Arşivlenmiş kopya".19 Mayıs 2020 tarihindekaynağındanarşivlendi.Erişim tarihi: 17 Mayıs 2020.
  16. ^"PHP: PHP 8 ChangeLog".php.net.25 Kasım 2020 tarihindekaynağındanarşivlendi.Erişim tarihi: 20 Şubat 2021.
  17. ^"PHP: PHP 8 ChangeLog".php.net.25 Kasım 2020 tarihindekaynağındanarşivlendi.Erişim tarihi: 20 Şubat 2021.
  18. ^"PHP: PHP 8 ChangeLog".php.net.25 Kasım 2020 tarihindekaynağındanarşivlendi.Erişim tarihi:2 Haziran2023.
  19. ^"PHP: PHP 8.1.0 Release Announcement".php.net(İngilizce). 25 Kasım 2021 tarihindekaynağındanarşivlendi.Erişim tarihi:2 Haziran2023.
  20. ^"PHP: PHP 8 ChangeLog".php.net.25 Kasım 2020 tarihindekaynağındanarşivlendi.Erişim tarihi:2 Haziran2023.
  21. ^"PHP: PHP 8.2.0 Release Announcement".php.net(İngilizce). 8 Aralık 2022 tarihindekaynağındanarşivlendi.Erişim tarihi:2 Haziran2023.
  22. ^"PHP: PHP 8.3.0 Release Announcement".7 Şubat 2024 tarihinde kaynağındanarşivlendi.Erişim tarihi:28 Ocak2024.
  23. ^"PHP Manual Image Processing and GD;".php.net. 10 Nisan 2011 tarihinde kaynağındanarşivlendi.Erişim tarihi:9 Nisan2011.
  24. ^"Embedding PHP in HTML".O'Reilly. 3 Mayıs 2001. 19 Şubat 2008 tarihindekaynağındanarşivlendi.Erişim tarihi: 25 Şubat 2008.
  25. ^"PHP Server-Side Scripting Language".Indiana University.4 Nisan 2007. 21 Ocak 2016 tarihindekaynağındanarşivlendi.Erişim tarihi: 25 Şubat 2008.
  26. ^"JavaServer Pages Technology — JavaServer Pages Comparing Methods for Server-Side Dynamic Content White Paper".Sun Microsystems. 2 Şubat 2008 tarihinde kaynağındanarşivlendi.Erişim tarihi: 25 Şubat 2008.
  27. ^"Five simple ways to tune your LAMP application".IBM.25 Ocak 2011. 28 Şubat 2021 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  28. ^"PHP at the core: Extension structure".PHP.net.26 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  29. ^"PHP at the core: The" counter "Extension – A Continuing Example".PHP.net.26 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  30. ^"Extension Writing Part I: Introduction to PHP and Zend".Zend Technologies.1 Mart 2005. 24 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  31. ^"Extension Writing Part II: Parameters, Arrays, and ZVALs".Zend Technologies.6 Haziran 2005. 26 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  32. ^"Extension Writing Part II: Parameters, Arrays, and ZVALs (continued)".Zend Technologies.6 Haziran 2005. 26 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  33. ^"Extension Writing Part III: Resources".Zend Technologies.12 Mayıs 2006. 26 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  34. ^"Wrapping C++ Classes in a PHP Extension".Zend Technologies.22 Nisan 2009. 20 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  35. ^"Extending PHP with C++?".Stack Overflow.27 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  36. ^"How can I use C++ code to interact with PHP?".Stack Overflow.Erişim tarihi: 22 Eylül 2013.
  37. ^Golemon, Sara (2006).Extending and Embedding PHP.Sams.ISBN978-0-672-32704-9.
  38. ^"Request #46919: Multithreading".PHP.net.27 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  39. ^"pthreads: Introduction (PHP Manual)".PHP.net.27 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  40. ^"PECL:: Package:: pthreads".pecl.php.net.26 Mart 2014 tarihinde kaynağındanarşivlendi.Erişim tarihi: 9 Şubat 2014.
  41. ^"Manual:Installation requirements#PHP".MediaWiki. 25 Ocak 2010. 27 Mayıs 2010 tarihinde kaynağındanarşivlendi.Erişim tarihi: 26 Şubat 2010.PHP is the programming language in which MediaWiki is written [...]
  42. ^"About WordPress".18 Mayıs 2022 tarihinde kaynağındanarşivlendi.Erişim tarihi: 26 Şubat 2010.WordPress was [...] built on PHP
  43. ^Kempkens, Alex."Joomla! — Content Management System to build websites & apps".6 Şubat 2024 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  44. ^"PHP and Drupal".Drupal.org. 16 Eylül 2007. 8 Şubat 2010 tarihinde kaynağındanarşivlendi.Erişim tarihi:13 Haziran2010.
  45. ^"About".Moodle.org. 11 Ocak 2010 tarihinde kaynağındanarşivlendi.Erişim tarihi: 20 Aralık 2009.
  46. ^"Server requirements of SilverStripe".28 Kasım 2014 tarihindekaynağındanarşivlendi.Erişim tarihi:13 Ekim2014.SilverStripe requires PHP 5.3.2+
  47. ^ab"Usage statistics of PHP for websites".W3Techs – World Wide Web Technology Surveys.W3Techs.Erişim tarihi:28 Ocak2024.
  48. ^"Usage Statistics and Market Share of PHP Version 4 for Websites, January 2024".w3techs.
  49. ^ab"Usage Statistics and Market Share of PHP Version 5 for Websites, January 2024".w3techs.
  50. ^"Usage Statistics and Market Share of PHP Version 7 for Websites, January 2024".w3techs.
  51. ^"Usage Statistics and Market Share of PHP Version 8 for Websites, January 2024".w3techs.
  52. ^Ide, Andy (31 Ocak 2013)."PHP just grows & grows".20 Nisan 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi:1 Nisan2013.
  53. ^"National Vulnerability Database (NVD) Search Vulnerabilities Statistics".24 Ekim 2020 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Kasım 2019.
  54. ^"PHP: rfc:taint".wiki.php.net.6 Şubat 2024 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  55. ^"Developer Meeting Notes, Nov. 2005".16 Temmuz 2023 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  56. ^"Taint mode decision, November 2007".26 Şubat 2009 tarihindekaynağındanarşivlendi.
  57. ^"Hardened-PHP Project".15 Ağustos 2008. 24 Şubat 2019 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Ağustos 2019.
  58. ^"Security: Using Register Globals".PHP Manual.PHP.net. 27 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  59. ^"Magic Quotes".PHP Manual.PHP.net. 8 Şubat 2014 tarihinde kaynağındanarşivlendi.Erişim tarihi:17 Ocak2014.
  60. ^"'engine' configuration directive ".PHP: Runtime Configuration.PHP.net. 9 Şubat 2014 tarihinde kaynağındanarşivlendi.Erişim tarihi: 13 Şubat 2014.
  61. ^"PHP Security Exploit With GIF Images".22 Haziran 2007. 27 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  62. ^"PHP security exploit with GIF images".PHP Classes blog. 20 Haziran 2007. 22 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  63. ^"Passing Malicious PHP Through getimagesize()".4 Haziran 2007. 21 Eylül 2013 tarihindekaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  64. ^"'enable_dl' configuration directive ".PHP: Runtime Configuration.PHP.net. 9 Şubat 2014 tarihinde kaynağındanarşivlendi.Erişim tarihi: 13 Şubat 2014.
  65. ^"PHP function reference: dl()".PHP.net. 26 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  66. ^"My host won't fix their Trojan".WebHosting Talk. 28 Eylül 2013 tarihinde kaynağındanarşivlendi.Erişim tarihi: 22 Eylül 2013.
  67. ^Raz0r (25 Ocak 2013)."Simple Machines Forum <= 2.0.3 Admin Password Reset".3 Aralık 2023 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  68. ^Nibble Security."TYPO3-SA-2010-020, TYPO3-SA-2010-022 EXPLAINED".4 Ocak 2011 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  69. ^"Криптостойкость и небезопасное сравнение".Ahack.ru(Rusça). 2 Temmuz 2014 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  70. ^"Comparison operators".PHP.net. 8 Şubat 2024 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  71. ^Krawczyk, Pawel (2013)."Most common attacks on web applications".IPSec.pl. 15 Nisan 2015 tarihindekaynağındanarşivlendi.Erişim tarihi:15 Nisan2015.
  72. ^Krawczyk, Pawel (2013)."So what are the" most critical "application flaws? On new OWASP Top 10".IPSec.pl. 15 Nisan 2015 tarihinde kaynağındanarşivlendi.Erişim tarihi:15 Nisan2015.
  73. ^"Usage Statistics and Market Share of PHP for Websites, December 2023".w3techs.Erişim tarihi: 23 Aralık 2020.
  74. ^"PHP: Rand - Manual".5 Şubat 2024 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  75. ^"PHP: Mt_rand - Manual".7 Şubat 2024 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  76. ^"PHP: Random_int - Manual".23 Aralık 2023 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.
  77. ^"I Forgot Your Password: Randomness Attacks Against PHP Applications".readkong.16 Temmuz 2023 tarihinde kaynağındanarşivlendi.Erişim tarihi: 7 Şubat 2024.

Dış bağlantılar

[değiştir|kaynağı değiştir]