• Bitcoin 10.05.2023

    27 670.00

    Litecoin 10.05.2023

    80.00 $

    XRP 10.05.2023

    0.43 $

  • Bitcoin 20.09.2023

    31 257.57

    Litecoin 20.09.2023

    80.60 $

    XRP 20.09.2023

    0.50 $

  • Bitcoin 31.12.2023

    35 562.43

    Litecoin 31.12.2023

    72.25 $

    XRP 31.12.2023

    0.80 $

РЕШЕНО! - Фильтрация URL на PHP

Добрый день. Помогите новичку. Подскажите как проверять и защищать URL, POST и GET-параметры?
P:S. Мой сайт был недавно взломан. Через гугл я узнал, что это жертва уколов сайта.
Ответ:
Здравствуйте. Как правило разработчики популярных библиотек наверняка гораздо умней и опытней нас.
Они давно всё продумали и протестировали на десятках тысяч программистов, но тем не менее когда дело доходит до безопасности приложений, важно заботиться не только о железе и операционной системе, но и о написании защищённых скриптов.
Ниже предоставляю решение которое поможет обеспечить безопасность вашего приложения и сделать его менее уязвимым.
<?php
/* функция фильтрации данных */
function val_filter($var, $disallow){
  $spl = explode("/", $var);
  foreach($spl as $item){
    if(!empty($item))
      $arr[] = trim(str_replace($disallow, '', mb_strtolower($item)));
  }
  return $arr;
}

  // получаем URL
  // Пример: https://example.com/param_1/param_2?param_3=param_4
  $url = $_SERVER['REQUEST_URI'];

  // запрещаем символы нежелательные
  $filter = array('~', '\'', '"', '<', '>', '.', '%');

  // Фильтрация для URL
  $arr_params = val_filter($url, $filter);

  // выводим результат в виде массива
  var_dump($arr_params);

  // Фильтрация для SQL запросов
  $query = "SELECT * FROM `users` WHERE `param_1` = '$arr_params[0]'";
  var_dump($query);
?>

Пояснения к решению
1. Сначала получаем URL
  Пример: https://example.com/param_1/param_2?param_3=param_4
  $url = $_SERVER['REQUEST_URI'];
  echo $url;
2. Решение: Фильтруем данные
<?php
/* функция фильтрации данных */
function val_filter($var, $disallow){
  $spl = explode("/", $var);
  foreach($spl as $item){
    if(!empty($item))
      $arr[] = trim(str_replace($disallow, '', mb_strtolower($item)));
  }
  return $arr;
}
?>
Получаем ответ:
array(7) {
  [0]=> string(7) "param_1"
  [1]=> string(23) "param_2?param_3=param_4"
}
Фильтрация для SQL запросов:
Очень часто при работе с кодом других PHP разработчиков натыкаюсь на множество участков кода, где происходит обращение для какой либо манипуляции к БД и это обращение НИКАК не защищено от SQL инъекций.

Все символы, входящие в чёрный список, удаляются из строки перед вставкой в базу.
$query = "SELECT * FROM `users` WHERE `name` = '$arr_params[0]'";
var_dump($query);

Если у вас остались вопросы пишите: @Sandr12 (Telegram)