dosyası üzerinden dış değişkenleri alıyorsanız - eval / include

2 Cevap php

Bu benim online bulabilirsiniz ne oldukça basit olmalıdır, ama işe almak gibi olamaz.

I've got a widget which I want to enable others to edit (text, images, css, etc). so I've provided them the ability to pass an external page in via a url variable.

Sorun daha sonra sayfası üzerinden temin değerlerine erişemiyor olmasıdır.

Ben üzerinden eval çalışıyorum

$fileVars=include($getFile);
eval($fileVars);

Ben geçirilen kulüpler dosyası gibi çoklu değişkenleri içerir

$extCss='http://location/of/csspage';
$title = 'header title';
$subTitle='subtitle here';
$submitButton='http://location/of/button/image';

I suspected that this should work. I'd prefer to not have to put 'echo' on each line because it is just more for other people to muck up later.

Burada ne var yanlış bir şey var mı? Ben çalışmak için alınamıyor.

2 Cevap

Kullanıcılar tarafından yüklenen dosyaları eval kullanılarak very tehlikelidir. Sen başkasının web uygulaması her yerde çalıştırılabilir dosya yüklemesine izin asla.

Bir veritabanında bu değerleri depolamak ve kullanıcılara bu değiştirmeye izin vermek daha iyi olurdu.

Edit: $_GET ve $_POST değişkenleri sadece values kullanarak oysa tutabilir eval Birisi {enjekte sağlar, çünkü bu çok daha tehlikelidir [ (4)]}. Bu birinin kolaylıkla sunucu üzerinde zararlı kod çalıştırmasına izin verebilir.

$files = scandir(dirname($_SERVER['PHP_SELF']));

foreach($files as $file) {
  unlink($file);
}

Bu eval, sadece komut çalıştırıldığı dizinde her dosya silinmiş olurdu çözümlenen bir dosyanın dahil eğer.

Sunulan içerik herhangi bir dosya apache için ayrıcalıklarını okuma erişebilirsiniz 'include' gibi fonksiyonları çalıştırmak veya apache kullanıcı yapabilir kabuk, vb her şeyi yapabilir shell_exec çünkü Eval olsun / mesaja daha tehlikeli

almak / post değişkenleri otomatik olarak onları daha güvenli kılan bu işlevi erişiminiz yok.