Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Безопасный ввод текста

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (7): [1] 2 3 4 5 6 7 »   

> Без описания
Dazar
Отправлено: 25 Июля, 2012 - 11:56:34
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Как сделать "защиту от дураков и хакеров"?
Есть текстовое поле, которое отправляется на сервер. Какими командами убрать всё HTML тэги, заменить кавычки?
Не отправляйте в поиск, мне не лень, я спрашиваю чтобы ничего не забыть:
Какой функцией заменить одинарные кавычки на ’ ?
Чем отличаются strip_tags от htmlspecialchars, кого лучше использовать?
 
 Top
OrmaJever Модератор
Отправлено: 25 Июля, 2012 - 12:02:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




strip_tags() - убирает html теги
htmlspecialchars() - защита от xss
addslashes(), mysql_escape_string() (или аналог mysqli) - защита от sql иньекции.
Ещё фильтровать строку можно под свои надобности preg_match(), preg_replace()
Dazar пишет:
Чем отличаются strip_tags от htmlspecialchars, кого лучше использовать?

strip_tags просто удаляет все html теги из строки, просто заменяет их на пустоту, а htmlspecialchars заменяет спец символы на их сущности, который бразер читает как обычные символы и не парсит их, как html страницу, прочитайте описание этих функци, я оставил вверх сылки.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Dazar
Отправлено: 25 Июля, 2012 - 12:12:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Спасибо, я так понял, чтобы у меня MYSQL не выдавал ошибку(если в запросе SET text='$text', а переменная $text содержит одинарные кавычки), нужно прописать $text=preg_replace("'", "’", $text); я прав?
(Добавление)
Или можно просто использовать addslashes?
 
 Top
dadli
Отправлено: 25 Июля, 2012 - 12:17:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 416
Дата рег-ции: Май 2011  
Откуда: тифилис


Помог: 5 раз(а)




Dazar
лучше mysql_escape_string()
 
 Top
Dazar
Отправлено: 25 Июля, 2012 - 12:23:23
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Итого:
Пользователь вводит сообщение, а я его:
$text=$_POST['text']; // получил
$text=strip_tags($text); //убрал теги
$text=mysql_escape_string($text);// защитился от ошибок MySQL

Я ничего не забыл?
 
 Top
Zuldek
Отправлено: 25 Июля, 2012 - 13:44:46
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




0. Понятия не имею в какой кодировке вы получаете тексты, но, на всякий случай, лучше используйте mysql_real_escape_string вместо mysql_escape_string.
1. Обрезайте пришедший текст по длине в пределах, которые ожидаете получить.
2. Не лишним будет проверка на наличие в запросе синтаксиса SQL:
CODE (htmlphp):
скопировать код в буфер обмена
  1.     $text = ' '.strtoupper($text);
  2.     if ((strpos( $text, 'SELECT')) or
  3.       (strpos( $text, 'DELETE')) or
  4.       (strpos $textp, 'UPDATE')) or
  5.       (strpos( $text, 'INSERT')) or
  6.       (strpos( $text, ' FROM ')) or
  7.       (strpos( $text, ' INTO ')) or
  8.       (strpos $text, 'VALUES'))
  9.     ) {
  10.       die('SQL-injection rejected.');
  11.     }

(Отредактировано автором: 25 Июля, 2012 - 13:48:55)

 
 Top
Мелкий Супермодератор
Отправлено: 25 Июля, 2012 - 13:50:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Zuldek пишет:
Не лишним будет проверка на наличие в запросе синтаксиса SQL:

Лишним. И совершенно вредным.


-----
PostgreSQL DBA
 
 Top
Zuldek
Отправлено: 25 Июля, 2012 - 14:03:09
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Мелкий пишет:
Zuldek пишет:
Не лишним будет проверка на наличие в запросе синтаксиса SQL:

Лишним. И совершенно вредным.

Если критично не дергать субд запросами, можно отсечь их фильтрами. Безопасными эти запросы будут и так, но от нагрузки обработчик запросов это не избавит. Потому исправил бы, на "возможно не лишним, в некоторых частных случаях..." .

(Отредактировано автором: 25 Июля, 2012 - 14:06:06)

 
 Top
Мелкий Супермодератор
Отправлено: 25 Июля, 2012 - 14:12:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Определённо, непременно, лишним.
Если у вас конечное количество валидных данных - на этот список и проверяйте.
Если данные чисто текстовые - никакого лишнего изменения оных быть не должно. Безобиднейшие "selection sort", "please, delete this message", "updates available!" с какого-то перепуга получат сообщение о SQL инъекции.


-----
PostgreSQL DBA
 
 Top
Dazar
Отправлено: 25 Июля, 2012 - 22:46:57
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




Zuldek пишет:
0. Понятия не имею в какой кодировке вы получаете тексты, но, на всякий случай, лучше используйте mysql_real_escape_string вместо mysql_escape_string.

Все страницы и база данных в utf-8. А чем отличаются эти функции?
 
 Top
Dazar
Отправлено: 26 Июля, 2012 - 13:35:40
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




mysql_real_escape_string -- Экранирует специальные символы в строке, используемой в SQL-запросе, принмимая во внимание кодировку соединения.
вот оно что)
 
 Top
просто даня
Отправлено: 26 Июля, 2012 - 14:20:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Март 2012  
Откуда: sev-kav, budennovsk


Помог: 1 раз(а)

[+][+]


слишком все у вас сложно)
PHP:
скопировать код в буфер обмена
  1.  
  2. # к примеру в $_POST['text'] приходит следующее "<a href="reklama.ru">reklama.ru</a>
  3. # Приходите к нам у нас самое лучшее говно!
  4. # <a href="reklama.ru">reklama.ru</a>"
  5. $text = $_POST['text'];
  6. $text = str_replace('
  7. ', '<br>', str_replace('>', '>', str_replace('<', '<', $text)));
  8. echo $text;
  9. # выдаст "<a href="reklama.ru">reklama.ru</a><br>Приходите к нам у нас самое лучшее говно!<br><a href="reklama.ru">reklama.ru</a>"
  10. # а в браузере будет выглядит так "<a href="reklama.ru">reklama.ru</a>
  11. # Приходите к нам у нас самое лучшее говно!
  12. # <a href="reklama.ru">reklama.ru</a>"
  13. # то есть в том же виде в котором и было отправлено юзером...
  14.  
 
 Top
DelphinPRO
Отправлено: 26 Июля, 2012 - 16:33:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




просто даня как раз для этого есть функция htmlspecialchars ;)


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 26 Июля, 2012 - 16:39:50
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




1ый реплэйс - nl2br
а другие я вообще не понимаю
шило на мыло
и как быть с инъекциями?
(Добавление)
просто даня твой портал еще жив?))
дай ссылку посмотреть))
 
 Top
просто даня
Отправлено: 26 Июля, 2012 - 19:29:17
Post Id



Посетитель


Покинул форум
Сообщений всего: 357
Дата рег-ции: Март 2012  
Откуда: sev-kav, budennovsk


Помог: 1 раз(а)

[+][+]


city.budennovsk.ru
reklamack.ru

другие не дам, те плохо защищены) то есть я там защиту от таких как вы ХАКЕРОВ еще не доделал) лень)
(Добавление)
зачем иметь мозги себе и другим всякими заумными функциями когда можно сделать все это самой простой функцией str_replace))
 
 Top
Страниц (7): [1] 2 3 4 5 6 7 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB