PHP: Nasıl Tehlikeli işlevleri devre dışı bırakmak

4 Cevap php

Nasıl tehlikeli eval fonksiyonu devre dışı bırakabilirsiniz? O ini_set fonksiyonu kullanılarak yapılabilir mi?

Ayrıca ne aşağıdaki işlevleri devre dışı bırakmak için? Biz ini_set işlevini kullanarak bunları devre dışı bırakabilir miyim?

allow_url_fopen  
allow_url_include
exec
shell_exec
system
passthru
popen
stream_select

eval kötü adamlar şeyler yararlanmak için kullanabileceğiniz en tehlikeli fonksiyonu biridir. php.ini dosyasına başvurmadan olmadan devre dışı bırakmak için bir mekanizma olmalıdır; ancak programlama yapılması gerektiğini.

Eh, ben php.ini dosyasına gitmeden bu tehlikeli güzel arkadaşlarının devre dışı bırakılmasını öneren cevaplar arıyorum adamlar; Ben zamanında veya programlama onları devre dışı bırakmak için nasıl yani?

Şimdiden teşekkürler ....

Update

Herkes PHP Shell Suçlu Komut duymuştur? Özellikle istismar için eval işlevi kullanılır. Hackerlar Sitenizde kendi PHP kodu çalıştırmak mümkün.

Benim soru tamamen php.ini dosyasında eval işlevini devre dışı bırakmak istemiyorum oldu. Örneğin, ben kendi MVC framework geliştirdik. Şimdi çerçeve kullanıcıların çerçeveler eval (ve diğerleri) fonksiyonu devre dışı bırakılmasını veya gerekip gerekmediğini yapılandırma dosyası belirtebilirsiniz. Bu yüzden, bu çerçeve kullanıcı seçimine bırakılmıştır. Onu devre dışı bırakmak için belirttikten sonra; i programlama eval işlevini devre dışı bırakmak gerekir.

Yani senaryodur. Faydalı cevaplar / çözümler arıyor.

Tekrar teşekkürler.

4 Cevap

Işlevlerini devre dışı bırakmak için, özellikle güvenlik nedenleriyle, sen disable_functions directive in your php.ini yapılandırma dosyasını kullanabilirsiniz.

Ancak, belgeler devletler olarak:

This directive must be set in php.ini For example, you cannot set this in httpd.conf.

Ben ... Bu başka bir yerde PHP daha yapılandırılabilir olması çok "iç" olduğunu varsayalım Ve ilgili güvenlik olduğu gibi, onu yapılandırmak için sistem yöneticisine kadar bulunuyor.


Still, the best security measure is to write clean/secure code, filter all input, escape all output... And not let anyone run their own code on your server !

Kısacası: Bunu yapamam.

Ama gerçekten, bu fonksiyonlar istismar nasıl eval ve anlamıyorum düşünüyorum. Programcılar bunları geçirilen düzgün ARGÜMANLAR dezenfekte yok zaman sorun oluşur.

Bahsettiğiniz php shell suçlu betik, bu işlevlerine argümanlar geçen sadece basit bir PHP betiği. Ancak saldırganların zaten zararlı programcık yükleme / enjekte bir yol vardı. Tüm bu işlevleri kullanırken ne de kullanıcı girişi argümanları geçen değilseniz, saldırganlar eval () veya yakınları kullanarak sunucu üzerinde keyfi kod çalıştırmasına olamaz.

Eğer kullanıcılar için bu çerçeveyi hosting olacak? Eğer kullanıcıların kod yüklemek ve çalıştırmak için izin veriyorsanız o zaman elinizde daha büyük bir sorun var.

Common PHP vulnerabilities: Bu ilgili saldırılar hakkında daha fazla bilgi edinmek için buraya uzaktan kod yürütülmesine ve yerel / uzak dosya dahil hakkında okuyun

Bu bir sorun olacağını neden mystified. Şüphesiz herkes sunucu üzerine php kodunu yüklemek ve çalıştırmak için izin vermez. Yoksa ne?

Disable_functions yönergesi php.ini sadece kullanılabilir [referans http://us3.php.net/manual/en/ini.list.php]

Zamanında işlevleri devre dışı bırakmak için siz de işlevlerini yeniden etkinleştirmek için zamanında engelli fonksiyon listesini değiştirmek mümkün olacağından, çok mantıklı değildir.