[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Задание на безопасность запроса
Эли4ка
Здравствуйте. Будете,конечно,смеяться, но вот снова не вывезла(сейчас особые критики скажут:что-то Эли4ка ты последнее время совсем не поезд)
Дали ссылку на материал(Вот) сказали прочитать.понять о чем там и выдать код-решение.
Я сделала примерно так(распишу алгоритм):
1)Удаляем теги,
2)Экранируем,
3)Удаляем \r,\n и т.д
Примерно все это так:
$i = '"%';
$i = strip_tags($i);
$i = addslashes($i);
//символы,которые удваиваем
$bad = array("'","`","%","\"");
$good = array("''","``","\%",""");
$i = str_replace($bad,$good,$i);
//что удаляем

$i = str_replace( "\r","", $i );
echo
$i;

Мне сказали,что с основной задачей данная функция не справляется. То есть если передадут шестнадцатеричное значения ` или ' то функция его пропустит в базу.
Или вот такой символ с кодом 0xbf27, addslashes()преобразует его в символ с кодом 0xbf5c27 и MySQL конвертирует его в два символа: 0xbf(¿) и 0x27(').Ну а дальше уже все понятно.
Тогда вопрос:А как в GET,POST и др. можно передать щестнадцатеричные значения?Они ведь будут строкой.
Проверила у себя так:
echo chr($_GET["i"]);
echo $_GET["i"];

Передавала следующее:0x27, 0xbf,0xbf27
Где функция chr не выводилось ничего.
Но если я делала следующий код:
echo "Тут:" . chr(0x27) . chr(0xbf) . chr(0xbf27);

Все выводилось как положено.
Что я делала не так,что через GET у меня ничего не выводилось в 16ричке?
P.S. Если передавать 159 или 100,то даже в GET в функции chr обрабатывалось как надо.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.