Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Обработка входящих данных

#11 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8
0

Отправлено 29 Июль 2009 - 13:21

Ребята подскажите пожалуйста как реализовать на PHP вот такую штуку.

мне надо что б при обработке данных из формы проверялось наличие данных слов:
delete
update
insert
данные слова предполагается хранить в массиве.
Если данные слова встречаются в любом поле формы то сообщение (комментарий) не добавлять а отправить сообщение админу.
Мне в принципе всё ясно, тока не знаю с помощью чего выполнить поиск данных слов.

Не будьте равнодушными и помогите плиз!
  • 0
Вникаю в тему создания сайтов...


#12 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 29 Июль 2009 - 13:44

По данному примеру поймешь...
$arr = array('insert', 'update', 'delete');	// опасные слова
$str = 'Я лютый хакер! Insert into ...'; // строка в которой нужно искать опасные слова
if (strpos($arr, $str) !== false) { // strpos() ищет подстроку $arr в строке $str
echo 'Ломают йопт!'; // и выдает false если ничего похожего не находит
}
else {
die ($str);
}

Но я бы посоветовал просто безопасно вносить данные в мускуль.
КОД НЕПРАВИЛЬНЫЙ! Первая ошибка, что я подставил массив а не строку. Нужно подбирать значения из массива, использовать цикл.

Тот код что ниже правильный! На крайняк можно типа так, сейчас буду думать как уменьшить количество символов :)
$str = 'Я лютый хакер!';

if (((strpos($str, 'insert'))
or (strpos($str, 'upload'))
or (strpos($str, 'delete'))) !== false) {
echo 'Ломают йопт!';
}
else {
die ('Скрипт работает!');
}

  • 0


#13 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 29 Июль 2009 - 14:28

Но я бы посоветовал просто безопасно вносить данные в мускуль.

Это как?
Пожалуйста подробней!
  • 0
Вникаю в тему создания сайтов...


#14 phpuser

phpuser
  • Пользователь
  • 520 сообщений
  • Репутация: 8

Отправлено 29 Июль 2009 - 14:31

А ещё такой вопрос.
Проверяться будут все слова данного массива или тока первое? Т.е. я имею в виду мне надо в цикле перебирать все слова?
$arr = array('insert', 'update', 'delete');
Или функция strpos() всё сама проверит?
  • 0
Вникаю в тему создания сайтов...


#15 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 29 Июль 2009 - 16:37

Проверяет на наличие каждого из слов, писать цикл ненадо.

Помню только что когда вносишь с БД, то можно юзать addslashes(), убрать слеши stripslashes(). Можно ещё использовать магические кавычки, но это тоже что и addslashes(). Функция addslashes() экранирует обратным слешем(\): ' (одиночные кавычки), " (двойные кавычки) и \ (обратный слэш). Можно ещё юзать сразу функцию mysql_real_escape_string() которая тоже экранирует опасные символы.
  • 0


#16 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 29 Июль 2009 - 22:40

Вот, прошу, рабочий скрипт:
$str = 'Я лютый хакер! insert';
$arr = array('insert', 'upload', 'delete');

foreach ($arr as $key => $value) {
if (strpos($str, $value) === false) {
echo 'Скрипт работает!';
exit;
}
else {
die ('Ломают!');
}
}

  • 0


#17 Arukard1

Arukard1
  • Пользователь
  • 193 сообщений
  • Репутация: 0

Отправлено 29 Июль 2009 - 23:05

Тут можно подробно почитать о SQL инъекциях и меры предосторожности
  • 0


Оформление форума – IPBSkins.ru