Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Еще раз про проверку данных с форм
 
 автор: Ivan   (09.06.2006 в 07:21)   письмо автору
 
 

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

В этом случае связка htmlspecialchars-stripslashes ведь не будет работать?

Если это так, то хочется разработать наиболее универсальную функцию обработки текста для достижения максимальной безопасности.
Да и, если не изменяет память, где-то в прессе встречал упоминание о недостаточности такого способа обработки.
Вроде надежнее еще и при выводе из базы делать проверочку, но как-то не хочется с этим заморачиваться.

Прошу присутствующих высказываться кто-чего-придумал...

   
 
 автор: Loki   (09.06.2006 в 11:58)   письмо автору
 
   для: Ivan   (09.06.2006 в 07:21)
 

mysql_escape_string

   
 
 автор: cheops   (09.06.2006 в 12:36)   письмо автору
 
   для: Ivan   (09.06.2006 в 07:21)
 

Перед занесением данных из HTML-формы, их следует обрабатывать при помощи конструкции
<?php
  
if (!get_magic_quotes_gpc())
  {
    
$theme mysql_escape_string($theme);
    
$author mysql_escape_string($author);
    
$pswrd mysql_escape_string($pswrd);
    
$url mysql_escape_string($url);
    
$message mysql_escape_string($message);
  }
?>

   
 
 автор: Trianon   (09.06.2006 в 12:53)   письмо автору
 
   для: cheops   (09.06.2006 в 12:36)
 

Добавлю только, что если нет возможности выключить режим magic_quotes_gpc, то из входных параметров сперва придется убрать экранирующие слэши функцией stripslashes.

Кажущийся идиотизм такого подхода на самом деле обусловлен тем фактом, что в свое время в движок php был воткнут механизм магических кавычек (да еще и включен по-умолчанию) призванный решать схожие (если не те же самые) задачи. Решать он их, естественно, не в состоянии, поскольку никаким волшебным образом невозможно неправильно написанный скрипт сделать защищенным. Вот и приходится сперва выключать, чтоб не мешал, (а если не выключить - устранять последствия), а потом заново проделывать похожую работу, но уже именно там, где надо, и над тем, над чем надо.

   
 
 автор: Ivan   (09.06.2006 в 16:10)   письмо автору
 
   для: cheops   (09.06.2006 в 12:36)
 

... и тогда полностью в сборе алгоритм?
ведь mysql_escape_string() с тегами ничего не делает - вставляй на здоровье.

   
 
 автор: Trianon   (09.06.2006 в 16:18)   письмо автору
 
   для: Ivan   (09.06.2006 в 16:10)
 

Теги не представляют опасности для базы.

Если Вы выводите текстовые данные в html-страницу, то их надо обрабатывать функцией htmlspecialchars. Это правило должно соблюдаться всегда. Оно не имеет никакого отношения ни к вводу данных из формы, ни к методике их хранения (в базе ли, в файлах, в сессиях или еще где).

   
 
 автор: Ivan   (09.06.2006 в 16:51)   письмо автору
 
   для: Trianon   (09.06.2006 в 16:18)
 

Так все-таки нужно обрабатывать перед выводом в html ?
Просто это ж будет чуть замедлять скрипт.

   
 
 автор: cheops   (09.06.2006 в 17:34)   письмо автору
 
   для: Ivan   (09.06.2006 в 16:51)
 

Зато вы легко сможете редактировать информацию в базе данных - они будет в исходном формате, если текст пропустить через htmlspecialchars() - и редактировать и систему редактирования будет не удобно создавать...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования