escapeshellcmd

(PHP 4, PHP 5, PHP 7, PHP 8)

escapeshellcmdKabuk özel karakterlerini önceler

Açıklama

escapeshellcmd(string$komut): string

escapeshellcmd() işlevi, içinde keyfi komutlar çalıştırarak bir kabuk komutunu kandırmak için kullanılabilecek bir dizgenin içerdiği karakterleri önceler. Bu işlev, exec() veya system() işlevlerine ya da çalıştırma işlecine aktarılmadan önce kullanıcı girdisi olarak alınan veriyi öncelemek için kullanılmalıdır.

Bir tersbölü çizgisi ile öncelenen karakterler şunlardır: &#;`|*?~<>^()[]{}$\, \x0A ve \xFF. ' ve " karakterleri sadece çiftler halinde değilse öncelenir. Windows'a tüm bu karakterlere ek olarak % ve ! imleri bir şapka imi (^) ile öncelenir.

Bağımsız Değişkenler

komut

Öncelenecek komut dizgesi.

Dönen Değerler

Öncelenmiş komut dizgesi.

Örnekler

Örnek 1 - escapeshellcmd() örneği

<?php
// Burada bilerek keyfi sayıda bağımsız değişkene izin veriyoruz.
$komut = './configure '.$_POST['configure_options'];

$öncelenen_komut = escapeshellcmd($komut);

system($öncelenen_komut);
?>
Uyarı

escapeshellcmd() komut dizgesinin tamamı üzerinde kullanılmalıdır. Buna rağmen saldırganın keyfi sayıda bağımsız değişken aktarmasına izin verir. Tek bir bağımsız değişkeni öncelemek için bu işlev yerine escapeshellarg() kullanılmalıdır.

Uyarı

Windows üzerinde C:\Program Files\ProgramName\program.exe gibi yollarda sorunlu olan escapeshellcmd() boşlukları öncelemez. Aşağıdaki kod parçası kullanılarak bu sorun ortadan kaldırılabilir:

<?php
$cmd
= preg_replace('`(?<!^) `', '^ ', escapeshellcmd($cmd));

Ayrıca Bakınız

To Top