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
Форумы портала PHP.SU :: Версия для печати :: htmlspecialchars и mysql_escape_string
Форумы портала PHP.SU » » Вопросы новичков » htmlspecialchars и mysql_escape_string

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

1. Itan - 08 Октября, 2011 - 18:00:42 - перейти к сообщению
Здравствуйте!

Я хочу в обработчике формы сделать защиту от 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? И вообще стоит ли её использовать, если она делает столько слешей? (ведь для экранизации в БД нужен хотя бы один?)
2. snikers987 - 08 Октября, 2011 - 18:11:47 - перейти к сообщению
при чем тут тег <html> к инъекциям? ты для начала что такое sql инъекция почитай

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

Это называется боюсь того не знаю чего, защищаюсь тем не знаю чем.
3. White - 08 Октября, 2011 - 18:26:14 - перейти к сообщению
snikers987 mysql_real_escape_string() для экранирования спецсимволов sql, htmlspecialchars() при втором аргументе ENT_QUOTES также заэкранирует все эти символы. а делается это не для защиты от инъекций, а для записи текстовых строк содержащих эти символы в БД, и если текстовая строка - html документ, то лучше использовать htmlspecialchars(). от инъекций это конечно спасает, но это не основное их предназначение.
4. snikers987 - 08 Октября, 2011 - 18:31:28 - перейти к сообщению
White, читай пост ТС . Он там ясно выразился что он хочет. И для чего нужна htmlspecialchars() мне известно.
5. Itan - 08 Октября, 2011 - 18:43:49 - перейти к сообщению
snikers987 ты если не понимаешь, о чем речь, так не надо засорять тут тему. Почитай для начала описание этих двух функций. И их прописал не только для защиты от инъекций, но и от html-кода, в частности от встраивания js-скриптов. Чтобы они не записывались в бд.
6. White - 08 Октября, 2011 - 18:46:44 - перейти к сообщению
snikers987 это к тому, что защититься от инъекций можно и с помощью htmlspecialchars(), если не забывать брать значения в кавычки. а ТС явно не понимает что и зачем он делает, для этого я и расписал зачем нужна каждая из этих функций.
7. snikers987 - 08 Октября, 2011 - 19:00:54 - перейти к сообщению
Itan пишет:
snikers987 но и от html-кода, в частности от встраивания js-скриптов. Чтобы они не записывались в бд.


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


лол... htmlspecialchars -- Преобразует специальные символы в HTML сущности
9. Champion - 08 Октября, 2011 - 20:35:09 - перейти к сообщению
Слешей много потому что включен magic_quotes. А остальное вроде вы сами разобрались.
Лучше, просто в порядке хорошего тона, всё, что предназначено для запросов прогонять через escape_string (или пользоваться препарированными запросами). Для "защиты от тэгов", как Вы это назвали - specialchars. А спешлчарить до вставки в БД или после - наверное Вам виднее
10. White - 08 Октября, 2011 - 21:13:10 - перейти к сообщению
Itan html инъекция это вообще ужас. но еще хуже css инъекция или text инъекция, от всех этих видов прекрасно спасает
PHP:
скопировать код в буфер обмена
  1. unset($_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION);
11. Champion - 08 Октября, 2011 - 21:20:11 - перейти к сообщению
White пишет:
Itan html инъекция это вообще ужас.
Давайте не надо тут)
12. Мелкий - 08 Октября, 2011 - 21:56:55 - перейти к сообщению
White, а как же $_SERVER? Ведь все заголовки HTTP_* присылает клиент и там может быть всё, что угодно! Паника!
13. OrmaJever - 08 Октября, 2011 - 22:53:51 - перейти к сообщению
Мелкий пишет:
White, а как же $_SERVER? Ведь все заголовки HTTP_* присылает клиент и там может быть всё, что угодно! Паника!

$_FILES Пёсик
14. Itan - 09 Октября, 2011 - 16:38:25 - перейти к сообщению
White пишет:
unset($_GET,$_POST,$_REQUEST,$_COOKIE,$_SESSION);


Дак это, если я пропишу такое в обработчике формы, то он удалит все данные, которые ввел юзер в форму??? Или как это юзать?
15. OrmaJever - 09 Октября, 2011 - 16:47:21 - перейти к сообщению
Itan нет причины - нет проблемы. Мне кажется отличное решение от уязвимостей Улыбка

 

Powered by ExBB FM 1.0 RC1