Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

PHP kodu tarayıcıda neden kaynak olarak görünmemelidir?​


PHP kodu tarayıcıda kaynak olarak görünmemelidir; çünkü PHP sunucuda çalıştırılır ve tarayıcıya yalnızca PHP’nin ürettiği çıktı, genellikle HTML gönderilir. Uygulamanın gerçek PHP dosyası beklenmedik biçimde ham içeriğiyle yanıt olarak geliyorsa işleyici eşlemesi hatalı olabilir; uygulamanın kaynak gösterme veya dosya okuma özelliği de incelenmelidir. Bir eğitim sayfasında bilerek gösterilen kod örneği, tek başına sızıntı kanıtı değildir. Bu durum yalnızca görüntüleme sorunu değil, kaynak kodu ve gizli bilgilerin açığa çıkması açısından ciddi bir yapılandırma hatasıdır.

PHP isteği nasıl işler?​


Tarayıcı index.php dosyasını istediğinde web sunucusu dosyayı PHP işlemcisine devreder. PHP kodu çalışır; echo ile üretilen HTML, metin veya JSON HTTP yanıtına yazılır. Tarayıcı bu yanıtı işler ve PHP kaynak kodunu görmez.

Örneğin sunucudaki dosya şöyle olsun:

Kod:
<?php
$message = 'PHP çalışıyor';
echo '<h1>' . htmlspecialchars($message, ENT_QUOTES, 'UTF-8') . '</h1>';

Beklenen sayfa çıktısı yalnızca PHP çalışıyor başlığının görüntülenmesidir. Bu örneğin ham dosya içeriği HTTP yanıtında aynen bulunuyorsa PHP yorumlama akışı incelenmelidir. Yalnızca değişken adına benzeyen bir metin görmek kesin kanıt sayılmaz. Tarayıcının geliştirici araçlarında görülen HTML de PHP kaynak kodu değildir; bu, sunucuda üretilmiş sonuçtur.

Sorunu güvenli biçimde teşhis etme​


Gerçek uygulama kaynağı açığa çıkıyorsa önce etkilenen adreslere erişimi sınırlandırın. Açığa çıkan parola veya anahtar varsa iptal edip yenileyin; erişim kayıtlarıyla olayın kapsamını araştırın. Kaynak metnini veya sırları destek mesajlarına kopyalamayın. Sonra yalnız yetkili test ortamında ya da erişimi sınırlandırılmış bir konumda, uygulamanın kullandığı web sunucusunu kontrol edin.

  1. İncelediğiniz PHP işleyicisinin kapsamındaki, erişimi sınırlandırılmış dizinde yalnızca aşağıdaki içeriği taşıyan geçici php-test.php dosyasını oluşturun:
    Kod:
    <?php
    echo 'PHP_OK';
  2. Dosyayı tarayıcıda normal uygulama alan adınız üzerinden açın; dosyayı doğrudan bilgisayarınızdan veya bir editörün önizlemesinden çalıştırmayın.
  3. Ekranda PHP_OK görünüyorsa PHP işleyicisi en azından bu dizinde çalışıyordur. Uygulamanızdaki sorun dosya yolu, yönlendirme veya belirli sanal sunucu yapılandırmasıyla sınırlı olabilir.
  4. Geliştirici araçlarının Network yanıtında veya sayfa kaynağında test dosyasının ham kodu görünüyorsa dosya yorumlanmadan gönderiliyordur. PHP çalışma zamanı ile web sunucusunun dosya eşlemesini ve ilgili sanal sunucu yapılandırmasını düzeltin.
  5. Dosya indiriliyorsa veya sunucu hata veriyorsa, dosya uzantısını, istek yönlendirmesini, PHP işlemcisinin kurulu ve etkin olduğunu ve web sunucusunun hata kayıtlarını kontrol edin.
  6. Test bittiğinde geçici dosyayı kaldırın. Ardından asıl uygulamanın aynı adres ve dizin kapsamındaki yanıtını, gerçek sırları ekrana basmadan doğrulayın.

Bu testin amacı yalnızca PHP’nin çalışıp çalışmadığını ayırmaktır. PHP_OK görülmesi, uygulamanın veritabanı, oturum veya framework ayarlarının doğru olduğu anlamına gelmez.

Belirtiye göre doğru yaklaşım​


Aşağıdaki ayrım, sorunun sunucu katmanında mı yoksa uygulama akışında mı olduğunu hızlıca belirlemeye yardımcı olur.

BelirtiMuhtemel nedenİlk kontrol
PHP etiketleri kaynakta görünüyorDosya PHP olarak işlenmiyorPHP işleyicisi ve sanal sunucu eşlemesi
Dosya indiriliyorYanıt türü veya sunucu yönlendirmesi yanlışWeb sunucusu yapılandırması ve dosya uzantısı
Boş sayfa ya da sunucu hatasıPHP, uygulama veya üst sunucu katmanında hata olabilirSunucu hata kayıtları ve uygulama günlükleri
Yalnız bazı klasörlerde kaynak görünüyorFarklı sanal sunucu veya dizin kuralıİlgili dizinin yapılandırması

Sunucu yapılandırmasını değiştirdikten sonra aynı test dosyasını yeniden açın. Değişiklik etkili olmuyorsa ilgili PHP işlemcisinin veya web sunucusunun yeniden yüklenmesi gerekebilir; bunu barındırma sağlayıcısının yönetim yöntemiyle yapın. Kaynak görünmesi devam ediyorsa uygulamayı yayımlamadan önce o sanal sunucuda PHP dosyalarını erişime kapatın.

Sık yapılan hatalar​


  • PHP dosyasını .html olarak kaydetmek: Sunucu bu uzantıyı PHP’ye devretmeyebilir. PHP kodu içeren dosyanın uzantısı ve sunucu kuralı birlikte uyumlu olmalıdır.
  • Dosyayı file:// ile açmak: Bu yöntem bir PHP sunucusu çalıştırmaz. Dosya, PHP destekli bir web sunucusu üzerinden istenmelidir.
  • Yalnızca tarayıcı önbelleğini temizlemek: Kaynak kodu görünüyorsa temel sorun önbellek değil, sunucunun yanıt üretme biçimidir.
  • Gizli bilgileri PHP dosyasına doğrudan yazmak: PHP normal çalışsa bile yanlış yapılandırma veya yedek dosya gibi başka bir sunucu hatası bilgileri açığa çıkarabilir. Gizli yapılandırmayı uygulamanın güvenli yapılandırma yönteminde tutun.
  • Sorunu gidermek için kaynak kodunu HTML yorumu içine almak: Bu, kodu korumaz; HTML yorumları tarayıcıya gönderilir ve sayfa kaynağında okunabilir.

Sık sorulan sorular​


PHP çalışırken kaynak kodu yine de sızabilir mi?​


Evet. Yanlış hazırlanmış bir dosya indirme veya kaynak gösterme uç noktası, PHP işleyicisi doğru çalışırken de dosya içeriğini yanıt olarak okuyabilir. Bu yüzden “PHP_OK çıktı” sonucu, bütün uygulama yollarının güvenli olduğunu kanıtlamaz.

Eski PHP yedek dosyaları neden ayrıca kontrol edilmelidir?​


config.php.bak gibi bir kopya, PHP işleyicisine gönderilmeyip statik dosya olarak sunulabilir. Kaynak ve yapılandırma yedeklerini herkese açık belge kökünün dışında tutun; yalnızca asıl .php adresinin düzgün çalışmasına güvenmeyin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.