POST запросы на сервер. Как изменить

  • Автор темы Автор темы tarweb
  • Дата начала Дата начала
Dovg
не передёргивай, здесь не профессиональные судьи, да и модерация делается между делом во время рабочих чаепитий, так что ошибки возможны и они не так уж критичны. ТС, всегда может пожаловаться, либо другой модератор поправит и откроет тему.
 
tarweb
Если ты хочешь проверять все массивы одной функцией - значит, ты что-то делаешь очень неправильно.
Скорее всего, ты делаешь свой сайт открытым для SQL инъекции.


Наоборот - таким образом я хочу своей функцией убивать на конечном этапе прихода информации на сервер, враждебные символы и операторы

PHP:
function badData ($str)
{
    $str = str_replace ( "UNION", " ", $str );
	$str = str_replace ( "union", " ", $str );
    $str = str_replace ( "CHAR", " ", $str );
	$str = str_replace ( "char", " ", $str );	
	$str = str_replace ( "OUTFILE", " ", $str );
	$str = str_replace ( "outfile", " ", $str );	
    $str = str_replace ( "FROM", " ", $str );
    $str = str_replace ( "from", " ", $str );	
	$str = str_replace ( "SELECT", " ", $str );
	$str = str_replace ( "select", " ", $str );
	
	// и т.д
	
    $del_symbols = array ( "#", "\$", "\t", "%", "^", "&", "+",
                           "\\", "|", "[", "]", "[","]", "{","}", 
						    "~", "“", "”", "*", "•"
                         );
    $str = str_replace($del_symbols, array(" "), $str);	
	
    return $str;	
}

if ($_POST)
{
$_POST = array_map("badData", $_POST);
}
elseif ($_GET)
{
$_GET = array_map("badData", $_GET);
}
else if ($_SESSION)
{
$_SESSION = array_map("badData", $_SESSION);
}


Может я не прав - поправте или дополните список для удаления в badData[/quote]
 
враждебные символы и операторы

Может я не прав - поправте или дополните список для удаления в badData
враждебные символы нападут на сервер и его покусают.

Ты не прав, и неправ глобально - твоя функция вообще не нужна.
 
tarweb, вот представь, что данный форум написал какой-нибудь идиот, который тоже любит просто вырезать символы, которые ему не нравятся. Как бы ты тогда написал сейчас свой пост, который содержит всю эту кучу «опасных» символов?
 
tarweb
То что ты делаешь - в корне неправильно.
Эта "защита" тебя не защитит. Она только испортит данные.

Защита должна делаться в каждом месте своя. Для базы данных - при работе с базой данных.
Для браузера - при выводе в браузер.
И так далее.

А если делать в самом начале, то защита для БД испортит данные для браузера, и наоборот.

Вместо такой проверки, как у тебя, надо правильно работать с БД
постарайся прочесть вот эту длинную статью http://habrahabr.ru/post/148701/
там есть функция, которой ты можешь воспользоваться для выполнения запросов.
 
tarweb, вот представь, что данный форум написал какой-нибудь идиот, который тоже любит просто вырезать символы, которые ему не нравятся. Как бы ты тогда написал сейчас свой пост, который содержит всю эту кучу «опасных» символов?

Неудачное сравнение
Сайты по програмированию, математике и т.д. могут быть как исключение
 
как же прав был baev.
tarweb я уже вижу ряд непредусмотренных комбинаций, которые пропустит ваш фильтр.
но в то же время не могу понять, что плохого в слове SELECT, зачем его вырезать?

p.s. Как не удивительно, но на Хабре, как раз такие гореспециалисты понаписывали код, в итоге куча всего режется.
 
AmdY
Да с какой стати прав-то? ВСЕ учатся, у всех глупость в голове играет. Не надо записывать человека в идиоты и выгонять с сайта только потому что он ничего ещё не знает, а в голове каша.

tarweb
Твоя защита - дурацкая.
она не защищает по-настоящему от инъекций.
она портит данные и удобство пользования сайтом.
она бессмысленная, поскольку защита SQL запросов делается совсем по-другому.
 
Сверху