Автор Тема: Как данные пришедшие от пользователя почистить?  (Прочитано 7988 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Стек, кроме запросов SELECT
есть еще запросы UPDATE и даже DELETE
В селекте действительно - много не наломаешь.
Разве что - инфу, которая тебе не положена, можно поглядеть. Но опять же, дело не только в инжекциях, а в банальной защите от ошибок.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Alexandr
Если вернуться к первоначальному вопросу.
собственно, у него три части.

1. Защита SQL запроса - его уже обсосали дочиста.

2. Защита HTML и JS. Во-первых - только, если надо, во-вторых, варианта два - либо стрипать теги, либо заменять.
Лично я обычно кладу в базу как есть, а на выходе заменяю < и > эквивалентами.
htmlspecialchars не помешает - как минимум при выводе данных в поле формы.

3. Свои собственные соображения.
Вот в приведенном тобой примере кто-то вырезает любые символы, которые не буквы, я так думаю. Это его личная идея.
при хранении данных гостевой книги в файле, я, например, заменяю перевод строки на
.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Кстати, я только сейчас заметил, что у тебя стоит
$user_data=stripslashes($user_data);
Не забудь убрать.

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Цитировать
Стек, кроме запросов SELECT
есть еще запросы UPDATE и даже DELETE
В селекте действительно - много не наломаешь.


Ок, хорошо, пускай будет
$SQL="DELETE FROM table WHERE name=\'".$name."\'";
Если у меня $name слашится - то каким образом меня могут поламать ?
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Никаким.
Об этом и речь.

Оффлайн Дмитрий Попов

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 264
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.programmist.spb.ru
А если не слешится, то и Select\'ом поломать можно.

Конечно сложнее, и знать чего-то надо, но все же:

Допустим запрос:
$query="select from `table` where id=\'$id\' ";

А я пишу id равным:
$id="1\';delete from `table` "...
Все! таблица  `table` потеряна...
 За Родину! За Россию!
SendMail для любого хостинга.

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Гмм... ясно, просто запутался спорах о слешировании. Думал что мне доказывают, что данные для базы надо еще раз дополнительно слешить, не обращая внимание на
php_flag magic_quotes_gpc on

Дмитрий Попов
Незнаю как к другим базам, но mysql_query разве научился понимать две sql команды в одном запросе ? Имхо delete from `table` просто не будет выполнятся. Таким образом разве что and id like \'%%\' проталкивать.
Да и то, при таких запросах надо уже четко знать структуру базы.
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Совершенно верно.

Оффлайн Дмитрий Попов

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 264
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.programmist.spb.ru
Ууупс... сторомозил :-)... бывает.
 За Родину! За Россию!
SendMail для любого хостинга.

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Цитировать
Троникс, хранить - действительно - совершенно не обязательно, и наоборот - вредно.

А я разве такое говорил? Посмотри внимательней мой пост.
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

Оффлайн Stek

  • Обожатель PHP
  • Ветеран
  • *****
  • Сообщений: 532
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.phpdevs.com
Помоему все уже просто запутались.
PHP без башни - сделай свою жизнь разнообразнее.
Разбираю скрипты, собираю заново, вытираю пыль с баз данных.

Оффлайн Alexandr

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 865
  • +0/-0
  • 0
    • Просмотр профиля
    • http://gtp.hobi.ru
[off]
RomikChef
Цитировать
потому, что у тебя ко мне неадекватное отношение

Ромик, боже упаси.
Мне, наоборот, твои посты нравятся. Особенно как ты с новичками. Или там про макароны, ложки и вилки... rulezzzz.
Просто порой начало топика не читаешь и пишешь ответы.
Вобщем всё ок.
[/off]
Вобщем буду делать следующим образом:

function clean_str(&$user_data){
$user_data=trim($user_data);
$user_data=str_replace("\\t"" "$user_data);
$user_data=str_replace("\\r",""$user_data);
$user_data=preg_replace("/  +/"," "$user_data);//2- пробела => на 1
$user_data=stripslashes($user_data);
$user_data=preg_replace("/[^\\x20-\\xFF]/","",@strval($str));
//Правда никто ничего про ЭТО не сказал.
}

Если надо вставить в SQL, то так
mysql_query("INSERT INTO _t VALUES (NULL, ".addslashes(clean_str($user_data)).")");
Если на мыло послать, то
маил($address, $subj, clean_str($user_data));
Если на экран, то
echo htmlspecialchars(clean_str($user_data));

Вот собственно мой вывод.
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) -   - Все для Авто.

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Alexandr
Цитировать
Или там про макароны, ложки и вилки... rulezzzz.

:):):):):):):):):):)
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28