2008-09-24 14 views
29

Sunucumuzda allow_url_fopen'un etkin olmasını isteyen birkaç geliştiricimiz var. Bu günlerde norm nedir ve libcurl etkinse gerçekten izin vermek için iyi bir neden var mı?PHP'de 'allow_url_fopen' olmasına izin vermeli miyim?

Çevre geçerli: yanı allow_url_fopen riskleri birçok azaltır Windows 2003, PHP 5.2.6, FastCGI

+0

Bunu yapmazdım. Aynı zamanda, PHP tabanlı saldırıların çoğu, ana bilgisayarın linux çalıştırdığını varsayar, bu yüzden bazıları yine de başarısız olur. – tacone

cevap

14

Kesinlikle Kapalı olarak allow_url_include seti istiyorum.

Ancak, PHP'nin tüm sürümleri allow_url_include'a sahip olmadığından, çoğu kişi için en iyi uygulama fopen'i kapatmaktır. Tüm özellikler gibi, gerçek şu ki, uygulamanız için ihtiyacınız yoksa, devre dışı bırakın. İhtiyacınız varsa, curl modülü muhtemelen daha iyisini yapabilir ve uygulamanızı allow_url_fopen'u devre dışı bırakmak için curl kullanacak şekilde yeniden ayarlayarak en az belirlenen kırıklığı engelleyebilir.

+4

Hey Ben, geliştiricinin yerel bir dosyaya başvurması gerektiğine inandıkları include() (veya (fopen()) değişkenlerine geçirilen, ancak bunun yerine, kötü amaçlı PHP kodunun site dışında depolandığı URL'leri oldukları oldukça değişkenler gördüm. Kimsenin neden dahil etmek istediğine dair birkaç akıl nedenini düşünebilirim ("http: // ..") ve sonuç olarak bu işlevsellik kapatılarak gerçek güvenlik geliştirilir. Bkz. Http://en.wikipedia.org/wiki/Remote_File_Inclusion –

+2

@Ben James: Güncel ticari forum paketimizde ve diğer güncel olmayan yazılımlarımızda güvenlik düşmesi nedeniyle bir süre önce çatlamıştık. Allow_url_include ve allow_url_fopen'in kapalı duruma getirilmesi hemen hemen her saldırıyı durdurdu. – tacone

+14

Neden aynı URL'yi indirir ve verileri aynı şekilde kullanırsam libcurl'u file_get_contents() işlevini kullanmaktan daha güvenli olur? Aynı şey. Tıpkı libcurl ve eval() 'in indirilmiş içeriğin kullanımı, harici bir URL'nin dahil edilmesinden() daha güvenli değildir. Sadece gerçekten "gerçekten sinir bozucu bir hale getirerek güvenlik", Windows Vista gibi iki kez sorarsanız, gerçekten bu programı çalıştırmak istersiniz. –

1

Siteler arası komut dosyası saldırıları bir acıdır, bu yüzden karşı oylamadır. Ve mutlaka "allow_url_include" ayarlanmış olmalıdır, yoksa bir dünya için.

+0

AFAIK bunun XSS ile ilgisi olmadığını, ancak yerel dosyaları yüklerken. – ananda

18

Yanıtın, geliştiricilerin bu özelliği sorumlu bir şekilde kullanmaları için ne kadar güvendiğinize inanıyorum? Harici bir URL’den gelen veriler, güvenilmeyen herhangi bir girdi gibi ele alınmalı ve anlaşıldığı sürece, büyük sorun nedir?

Gördüğüm gibi, geliştiricilerinize çocuk gibi davranırsanız ve keskin şeyler işlemesine izin vermezseniz, güvenli kod yazmanın sorumluluğunu hiç öğrenmeyen geliştiricileriniz olur.

1

Bu, geliştirme türüne bağlıdır. Eğer prototiplemeniz daha sonra 'allow_url_fopen' yi etkinleştiriyorsa, libcurl ve file_get_contents arasında önemli bir hız farkı yoktur ve bu sadece bir kolaylık meselesidir.

Üretim sunucuları için libcurl'a yapılan herhangi bir çağrı güvenlik denetimi için işaretlenmelidir. 'Allow_url_fopen' etkinse, fopen ve file_get_contents gibi. 'Allow_url_fopen' işlevinin devre dışı bırakılması, istismarları önlemez, yalnızca yapılabilecek yolların sayısını sınırlar.

-3

büyük sorun curl kullanarak bir url dosya kaydetmek istiyorsanız, dosyayı kaydetmek/Fopen file_get gelen geçmelidir böylece allow_url_include'u daha güvenli olmamasıdır.

  • CURL URL'den uzak içeriği almak için sadece iyidir. Sunucunuza uzak dosyayı kaydetmek istiyorsanız
  • CURL Fopen veya File_get ile eklenmelidir (gerekli değildir allow_url_fopen). (CURL ile zorunlu allow_url_fopen)

Php daha güvenli hale getirmek için başka yollar bulmalıdır.

+0

Bu sadece yanlıştır; Curl kullanarak içeriği almak için olsanız bile, allow_url_fopen özelliğini etkinleştirmeden bir dosya kaydedebilirsiniz. –

İlgili konular