Должен ли я изменить $ _REQUEST на $ _POST

0

Привет, ребята, вопрос, у меня есть флажок, где список элементов можно проверять и удалять одним нажатием кнопки. В настоящее время я использую запрос , и он выполняет работу, но мне было интересно, является ли $_REQUEST своего рода угрозой безопасности или неправильным. Если у кого-нибудь есть совет, я был бы признателен. Должен ли я перейти на $_POST? Если да, то каков наилучший способ сделать это?

 foreach ($_REQUEST as $key=>$value) {
    if (substr($key,0,3)==="img") {
      $id = substr($key,3);
if(isset($_REQUEST['Delete'])) { 

 $sql = 'SELECT file_name,username FROM images WHERE id=?';
$stmt = $conn->prepare($sql);
$result=$stmt->execute(array($id));

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$image=$row['file_name'];
$user=$row['username'];
$myFile = "$user/images/$image";
unlink($myFile);
}


<input id=\"img".$id."\" name=\"img".$id."\" type=\"checkbox\">
Теги:

3 ответа

3

Да. Вы должны изменить его на $_POST. Всегда используйте соответствующие суперглобалы над $_REQUEST.

Из-за порядка, в котором данные собраны в $_REQUEST, вполне возможно, что ключи не будут такими, какие вы ожидали бы. Это может привести к серьезным последствиям для безопасности. См:

0

Не проблема безопасности (злоумышленник может обработать любой запрос GET/POST, который он хочет, и даже отправить его из законного браузера пользователя через CSRF), но проблема обслуживания, поскольку случайно значение cookie может перезаписать параметр запроса, Также вы можете столкнуться с проблемами, если принимаете запросы GET, например. удаление файлов - запросы GET считаются безопасными, а пользовательские агенты могут быть либеральными с их отправкой. Вы должны принимать только POST для запросов, которые изменяют данные или внутреннее состояние и GET для всего остального.

0

По мере того, как ваше приложение растет с помощью $_REQUEST вместо соответствующего массива, безусловно, сделает вашу документацию кошмаром. Использование $_REQUEST для получения значений $_GET или $_POST просто не нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню