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 :: htmlspecialchars и mysql_escape_string

 PHP.SU

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


 Страниц (1): [1]   

> Без описания
Itan
Отправлено: 08 Октября, 2011 - 18:00:42
Post Id


Частый гость


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


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




Здравствуйте!

Я хочу в обработчике формы сделать защиту от SQL-инъекций.
И в обработчике пишу так:


Пробую ввести в строку форму такое:
<html> select * from isse_comments where id= 'admin'

На выводе получается так:
&lt;html&gt; select * from isse_comments where id= \\\'admin\\\'

Теперь я поставил просто

Ввожу в строку формы <html> select * from isse_comments where id= 'admin'

И на выходе получается:
&lt;html&gt; select * from isse_comments where id= \'admin\'

Вопрос: почему в первом случае много слешей, и стоит ли использовать функцию mysql_escape_string совместно с htmlspecialchars? И вообще стоит ли её использовать, если она делает столько слешей? (ведь для экранизации в БД нужен хотя бы один?)
 
 Top
snikers987
Отправлено: 08 Октября, 2011 - 18:11:47
Post Id



Участник


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


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




при чем тут тег <html> к инъекциям? ты для начала что такое sql инъекция почитай

достаточно одной функции mysql_real_escape_string() для защиты от инъекций.

Это называется боюсь того не знаю чего, защищаюсь тем не знаю чем.

(Отредактировано автором: 09 Октября, 2011 - 00:12:40)



-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
White
Отправлено: 08 Октября, 2011 - 18:26:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




snikers987 mysql_real_escape_string() для экранирования спецсимволов sql, htmlspecialchars() при втором аргументе ENT_QUOTES также заэкранирует все эти символы. а делается это не для защиты от инъекций, а для записи текстовых строк содержащих эти символы в БД, и если текстовая строка - html документ, то лучше использовать htmlspecialchars(). от инъекций это конечно спасает, но это не основное их предназначение.


-----
if(time()>1356048000) die();
 
 Top
snikers987
Отправлено: 08 Октября, 2011 - 18:31:28
Post Id



Участник


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


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




White, читай пост ТС . Он там ясно выразился что он хочет. И для чего нужна htmlspecialchars() мне известно.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Itan
Отправлено: 08 Октября, 2011 - 18:43:49
Post Id


Частый гость


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


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




snikers987 ты если не понимаешь, о чем речь, так не надо засорять тут тему. Почитай для начала описание этих двух функций. И их прописал не только для защиты от инъекций, но и от html-кода, в частности от встраивания js-скриптов. Чтобы они не записывались в бд.
 
 Top
White
Отправлено: 08 Октября, 2011 - 18:46:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




snikers987 это к тому, что защититься от инъекций можно и с помощью htmlspecialchars(), если не забывать брать значения в кавычки. а ТС явно не понимает что и зачем он делает, для этого я и расписал зачем нужна каждая из этих функций.


-----
if(time()>1356048000) die();
 
 Top
snikers987
Отправлено: 08 Октября, 2011 - 19:00:54
Post Id



Участник


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


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




Itan пишет:
snikers987 но и от html-кода, в частности от встраивания js-скриптов. Чтобы они не записывались в бд.


а ты уверен что ты сам вообще что то понимаешь? удаление из строки тегов с помощью htmlspecialchars() o_O


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
Itan
Отправлено: 08 Октября, 2011 - 19:01:10
Post Id


Частый гость


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


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




Значит,. для защиты одновременно и от инъекции и от тегов поможет htmlspecialchars? Получается, можно не использовать mysql_escape_string?
(Добавление)
snikers987 пишет:
а ты уверен что ты сам вообще что то понимаешь? удаление из строки тегов с помощью htmlspecialchars() o_O


лол... htmlspecialchars -- Преобразует специальные символы в HTML сущности
 
 Top
Champion Супермодератор
Отправлено: 08 Октября, 2011 - 20:35:09
Post Id



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


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


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




Слешей много потому что включен magic_quotes. А остальное вроде вы сами разобрались.
Лучше, просто в порядке хорошего тона, всё, что предназначено для запросов прогонять через escape_string (или пользоваться препарированными запросами). Для "защиты от тэгов", как Вы это назвали - specialchars. А спешлчарить до вставки в БД или после - наверное Вам виднее
 
 Top
White
Отправлено: 08 Октября, 2011 - 21:13:10
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


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




Itan html инъекция это вообще ужас. но еще хуже css инъекция или text инъекция, от всех этих видов прекрасно спасает
PHP:
скопировать код в буфер обмена
  1. unset($_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION);


-----
if(time()>1356048000) die();
 
 Top
Champion Супермодератор
Отправлено: 08 Октября, 2011 - 21:20:11
Post Id



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


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


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




White пишет:
Itan html инъекция это вообще ужас.
Давайте не надо тут)
 
 Top
Мелкий Супермодератор
Отправлено: 08 Октября, 2011 - 21:56:55
Post Id



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


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


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




White, а как же $_SERVER? Ведь все заголовки HTTP_* присылает клиент и там может быть всё, что угодно! Паника!


-----
PostgreSQL DBA
 
 Top
OrmaJever Модератор
Отправлено: 08 Октября, 2011 - 22:53:51
Post Id



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


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


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




Мелкий пишет:
White, а как же $_SERVER? Ведь все заголовки HTTP_* присылает клиент и там может быть всё, что угодно! Паника!

$_FILES Пёсик


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Itan
Отправлено: 09 Октября, 2011 - 16:38:25
Post Id


Частый гость


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


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




White пишет:
unset($_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION);


Дак это, если я пропишу такое в обработчике формы, то он удалит все данные, которые ввел юзер в форму??? Или как это юзать?
 
 Top
OrmaJever Модератор
Отправлено: 09 Октября, 2011 - 16:47:21
Post Id



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


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


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




Itan нет причины - нет проблемы. Мне кажется отличное решение от уязвимостей Улыбка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB