[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Дырка в безопасности
maximka787
Ребят, подскажите, я тут случайно в свой сайт в в форму ввел <?
и у меня теперь получился "редизайн" с кучей нерабочих ссылок

Где там ошибка, я не пойму

<form method="post" action="update.php">
<
input type="text" name="user">
<
br><input type="submit" value="отправить">
</
form>

// страница добавления в базу
$user=$_POST[user];
$user = substr($user,0,30);
mysql_query("SET NAMES cp1251");
$result = mysql_query("update account set user='".mysql_real_escape_string($user)."' where id='".$_SESSION['valid_user']."'");

//страница вывода
echo '<br><b>Ваше новое имя: </b>'.stripslashes($row['user']);




Спустя 4 минуты, 55 секунд (25.08.2010 - 09:26) linker написал(а):
Например
htmlspecialchars($row['user'])

Спустя 13 минут, 13 секунд (25.08.2010 - 09:39) maximka787 написал(а):
Цитата (linker @ 25.08.2010 - 06:26)
Например
htmlspecialchars($row['user'])

Получилось, теперь имя юзера <?
и ещё я проверил <script></script> тоже попдает в базу данных
так и должно быть? или тут надо ещё как то фильтровать по словам?

Спустя 1 минута, 45 секунд (25.08.2010 - 09:41) linker написал(а):
Ну и пускай попадает, главное что оно не работает. strip_tags()

Спустя 21 секунда (25.08.2010 - 09:41) phz написал(а):
Главное на входе в базу mysql_real_escape_string

на выходе htmlspecialchars, и будет всё в поряде

Спустя 4 минуты, 46 секунд (25.08.2010 - 09:46) phz написал(а):
И исправьте

$_POST[user];


на

$_POST['user'];


ибо будет Notice

Спустя 8 минут, 9 секунд (25.08.2010 - 09:54) maximka787 написал(а):
Цитата (phz @ 25.08.2010 - 06:46)
ибо будет Notice

у меня в кодах то

$_POST[user];
то
$_POST['user'];
и
$_POST["user"];


в принципе везде работает) а что это за Notice?
переменная вроде определена

Спустя 7 минут, 12 секунд (25.08.2010 - 10:01) maximka787 написал(а):
И ещё
htmlspecialchars($row['user'])

теперь если я заключил юзера в кавычки "lexa"
то выводится \"lexa\"

Спустя 32 секунды (25.08.2010 - 10:02) linker написал(а):
user - это PHP-константа, которая определяется через define()
'user' - это стоковое значение, используется например для доступа к элементу ассоциативного массива по ключу.

Но PHP не дурак, он user представит как 'user', если такая константа не определена.

Это был пример, головой думать ведь никто не запрещал - stripslashes()

Спустя 1 минута, 38 секунд (25.08.2010 - 10:03) maximka787 написал(а):
Цитата (linker @ 25.08.2010 - 07:02)
user - это PHP-константа,

ясно, на всякий заключу в ' '
а на счет поста выше? про кавычки?

Спустя 4 минуты, 20 секунд (25.08.2010 - 10:08) maximka787 написал(а):
оо, сам разобрался))
htmlspecialchars(stripslashes($row['user']))

Спустя 5 минут, 48 секунд (25.08.2010 - 10:13) twin написал(а):
А если таки отключена magic_quotes_gpc?

Спустя 3 минуты, 38 секунд (25.08.2010 - 10:17) linker написал(а):
Ну отработает stripslashes() впустую.

Спустя 1 минута, 3 секунды (25.08.2010 - 10:18) twin написал(а):
Неееет. Она сожрет значимые бэкслэши. Вот такое "\n" запостить не получится.

Спустя 1 минута, 16 секунд (25.08.2010 - 10:19) maximka787 написал(а):
Ой, жесть, а что делать? а как узнать про magic_quotes_gpc
у меня скорее всего 1

кстати "\n" получилось запостить
Вообще я думаю провыерку сделать на разрешение только русских и англ букв кавычек и цифр. думаю это самый нормальный вариант

Спустя 5 минут, 48 секунд (25.08.2010 - 10:25) twin написал(а):
Цитата
кстати "\n" получилось запостить
это потому что включено. А вот скоро выведут из употребления директиву (она деприкатед) и будет косяк.

Вот тут поройся. А лучше сам реши, наука будет на всю жизнь.

Спустя 7 минут, 58 секунд (25.08.2010 - 10:33) linker написал(а):
Цитата (twin @ 25.08.2010 - 10:18)
Неееет. Она сожрет значимые бэкслэши. Вот такое "\n" запостить не получится.

Он не жрет такие слэши smile.gif Вот если бы было "\\n", тогда получилось бы "\n"

Спустя 2 минуты, 19 секунд (25.08.2010 - 10:35) twin написал(а):
Еще как жрет. smile.gif
$text = '\n';  
echo stripslashes($text);

Спустя 5 минут, 29 секунд (25.08.2010 - 10:41) linker написал(а):
twin
Хех, хитрый, а ты попробуй "\n"

Спустя 3 минуты, 32 секунды (25.08.2010 - 10:44) twin написал(а):
Ы. Я же написал - значимые, а не экранирующие. Из формы можно хоть так '\n', хоть так "\n" - все равно сожрет. smile.gif

Спустя 1 час, 8 минут, 30 секунд (25.08.2010 - 11:53) Nord написал(а):
Цитата
Ой, жесть, а что делать? а как узнать про magic_quotes_gpc
у меня скорее всего 1

Вот так:
if (get_magic_quotes_gpc()) $string = stripslashes($string);

Спустя 4 дня, 7 часов, 54 минуты, 31 секунда (29.08.2010 - 19:47) Tibrum написал(а):
Подскажите, если я перейду со стандартных mysql функций на PDO, я могу не писать всю эту ерунду с "mysql_escape_string / stripslashes" при обращении к БД?

Спустя 3 минуты, 54 секунды (29.08.2010 - 19:51) twin написал(а):
Эту можешь не писать. Будешь писать другую, ничем не лучше. smile.gif

Спустя 1 день, 2 часа, 15 минут, 58 секунд (30.08.2010 - 22:07) Tibrum написал(а):
Цитата
Будешь писать другую, ничем не лучше. smile.gif


Не подскажите, какую например? smile.gif


_____________
..Работает - не трогай!
Быстрый ответ:

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