Ошибка безопасности $ _GET ['user'] в PHP - PullRequest
1 голос
/ 10 августа 2011

Я выкладываю его для разъяснения в конкретной ситуации, хотя санизация / проверки пользовательского ввода - тема клише.

Раздел кода содержит

$haystack=$_GET['user'];

$ input никогда не используется для «echo» или «print», ни в каком-либо SQL-запросе, ни в подобных вещах. Единственное дальнейшее использование пользовательского ввода ($ haystack) - проверить, содержит ли строка предопределенный $ needle.

if (preg_match($needle,$haystack)) {
$result="A";
} else {
$result="B";
}

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

Таким образом, вопрос заключается в том, что если пользовательский ввод используется только в контексте (не использованном в echo, print, SQL и т. Д.), Указанном выше, все еще существует вероятность выполнения вредоносного кода в пользовательском вводе. *

Я хотел добавить меры безопасности, которые просто необходимы для контекста, а не переусердствовать с ним.

Ответы [ 4 ]

3 голосов
/ 10 августа 2011

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

Вы должны быть осторожны с eval, preg_replace (с модификатором e, спасибо Pelshoff ), запросы к базе данных и echo (& print, sprintf…).

0 голосов
/ 10 августа 2011

Хотя $haystack может не отражаться, оно, очевидно, может влиять на ход программы. Размещенный (чрезвычайно короткий) код, безусловно, не выглядит прямо уязвимым, но отсутствие очистки вашего ввода может привести к выполнению кода в сочетании с другими уязвимостями.

0 голосов
/ 10 августа 2011

preg_match не закончится выполнением вашего ввода.Это слишком просто и понятно, чтобы иметь скрытую уязвимость.Если вы набросите $haystack после запуска preg_match на нем, то это не может повредить вам.

0 голосов
/ 10 августа 2011

Невозможно просто выполнить произвольный код, если можно изменить строку.Только когда вы выводите строку напрямую или используете ее в SQL, вы должны быть действительно обеспокоены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...