Фильтр var для вызова шеллскрипта с системой на php - PullRequest
1 голос
/ 23 марта 2012

Мне нужно отфильтровать эти переменные, чтобы вызвать систему в php и выполнить скрипт оболочки. Какой макрос filter_var SANITIZE мне нужно использовать для удаления ";" или проблемы при выполнении оболочки? Как нежелательные символы .. и т.д. *. 1001 *

Это мой пример тестирования кода, теперь я жестко запрограммировал var для тестирования .. Спасибо!

$ragionesociale = $_GET["ragionesociale"]; /* Alphanumeric with spaces next trimmed*/
$api = $_GET["ragionesociale"]; /* Uri with space encoded*/
$sito = $_GET["sito"]; /* Uri with space encoded*/
$meta = $_GET["meta"]; /*Address, CF, a lot of things...*/
$tmp_dir = "tmp_app";


if(!filter_has_var(INPUT_GET, "ragionesociale") ||
   !filter_has_var(INPUT_GET, "sito") ||
   !filter_has_var(INPUT_GET, "meta") ||
   !filter_has_var(INPUT_GET, "api")
){  
 echo("Input type does not exist");
 exit();
}

 system("../configmyapp2.sh ".$ragionesociale." ".$api." ".$sito." ".$meta." ".$tmp_dir);

Ответы [ 4 ]

1 голос
/ 23 марта 2012

http://php.net/manual/en/function.escapeshellarg.php

Передайте параметры командной строки через это, и вы в безопасности;) Также я бы рекомендовал использовать exec () вместо system () или даже shell_exec (), потому что выбыть в состоянии получить возвращаемое значение из вашего скрипта, а также любой текстовый вывод, который вы можете использовать.

1 голос
/ 23 марта 2012

Если это может быть вызвано другими пользователями, я бы не стал использовать этот метод.

Это очень опасно, особенно с вашими несколькими параметрами и правилами очистки.

0 голосов
/ 23 марта 2012

Нет встроенного фильтра очистки, который может это сделать; однако вы можете подделать его с помощью FILTER_CALLBACK и escapeshellarg следующим образом:

$var = filter_var($input, FILTER_CALLBACK, array('options' => 'escapeshellarg'));
0 голосов
/ 23 марта 2012

Вас может заинтересовать escapeshellarg () .

escapeshellarg () добавляет одиночные кавычки вокруг строки и кавычки / экранирует любые существующие одинарные кавычки, позволяя передавать строку непосредственно вфункция оболочки и ее обращение с ним как с одним безопасным аргументом.Эта функция должна использоваться для экранирования отдельных аргументов функций оболочки, поступающих от пользовательского ввода.Функции оболочки включают в себя exec (), system () и оператор backtick.
...