здравствуйте
есть поле в форме для ввода комментария
нужно проверить текст
после отправки использую функ nl2br() для разделения строк она вставляет /бр
какой функцией или ещё чем мне проверять текст для защиты приложения и бд от потенциальных рисков?
на данные момент думаю применить strip_tags ( string str [, string allowable_tags] )
указав в качестве необязательного параметра </br>
но данная функция походу игнорирует незавершённые теги или теги с ошибками
какие ещё варианты или этого вполне достаточно?
1. broshurkaplus - 03 Марта, 2011 - 19:42:18 - перейти к сообщению
2. CTAPbIu_KODEP - 03 Марта, 2011 - 22:23:53 - перейти к сообщению
htmlspecialchars(string $str);
преобразит кавычки скобки и др. в html представление.
преобразит кавычки скобки и др. в html представление.
3. Мелкий - 03 Марта, 2011 - 22:32:55 - перейти к сообщению
broshurkaplus, базе данных, если это, конечно, не xml, вообще пофиг на тэги.
Говоря о MySQL, используйте mysql_real_escape_string для защиты от sql-инъекций и htmlspecialchars для защиты от XSS - вполне достаточно.
Говоря о MySQL, используйте mysql_real_escape_string для защиты от sql-инъекций и htmlspecialchars для защиты от XSS - вполне достаточно.
4. DeepVarvar - 03 Марта, 2011 - 22:38:21 - перейти к сообщению
broshurkaplus пишет:
nl2br()
Кстати...
Говорят что в php4 (или 3?) эта ф-ция возвращала <br>
А с некоторой версии стала возвращать <br />
Так вот у меня рнр-5.2.10 и чота возвращает она по старинке <br>
К чему бы это?
5. CTAPbIu_KODEP - 03 Марта, 2011 - 23:11:28 - перейти к сообщению
DeepVarvar пишет:
Кстати...
Говорят что в php4 (или 3?) эта ф-ция возвращала <br>
А с некоторой версии стала возвращать <br />
Так вот у меня рнр-5.2.10 и чота возвращает она по старинке <br>
К чему бы это?
broshurkaplus пишет:
nl2br()
Кстати...
Говорят что в php4 (или 3?) эта ф-ция возвращала <br>
А с некоторой версии стала возвращать <br />
Так вот у меня рнр-5.2.10 и чота возвращает она по старинке <br>
К чему бы это?
может баГ))
6. DeepVarvar - 03 Марта, 2011 - 23:16:32 - перейти к сообщению
CTAPbIu_KODEP пишет:
может баГ))
скорее сборка такая... Он же не из сорцов - он из репозитария
7. OrmaJever - 04 Марта, 2011 - 00:01:26 - перейти к сообщению
DeepVarvar пишет:
Так вот у меня рнр-5.2.10 и чота возвращает она по старинке <br>
5.1.1 <br/>
8. JustUserR - 04 Марта, 2011 - 12:25:21 - перейти к сообщению
broshurkaplus Для осуществления поддержки безопасности предполагамеого web-приложения, необходимо проведение операции модификации уровня элементного трактования относительно разделительных и управляющих объектов для полученных информационных полей, которое в аспекте использование HTML-синтаксиса может быть обеспечено функцией htmlentities, однако для осуществления гарантированной защиты требуется предшествующее сопоставление кодовых таблиц, используемых для размещения данных информационных полей в слое данных
9. broshurkaplus - 04 Марта, 2011 - 16:05:30 - перейти к сообщению
спасибо всё понятно
str И он ей говорит :
- Привет!
Она : "Привет."
делаю так
$_POST[str]= mysql_real_escape_string($_POST[str])
$_POST[str]= htmlspecialchars($_POST[str])
$_POST[str]=nl2br($_POST[str]);
ДУМАЮ ЭТОГО КОДА БУДЕТ ДОСТАТОЧНО???
далее вставляем в базу и будет:
И он ей говорит :<br />
- Привет!<br />
Она : "Привет."<br />
смущает то что если пользователь вместо " использует 'и' тоне выдаст ли \'\'
что некорректно отобразится при выдаче контента пользователю ?
да простите за суматоху у меня nl2br добавляет <br />, не так / поставил.
str И он ей говорит :
- Привет!
Она : "Привет."
делаю так
$_POST[str]= mysql_real_escape_string($_POST[str])
$_POST[str]= htmlspecialchars($_POST[str])
$_POST[str]=nl2br($_POST[str]);
ДУМАЮ ЭТОГО КОДА БУДЕТ ДОСТАТОЧНО???
далее вставляем в базу и будет:
И он ей говорит :<br />
- Привет!<br />
Она : "Привет."<br />
смущает то что если пользователь вместо " использует 'и' тоне выдаст ли \'\'
что некорректно отобразится при выдаче контента пользователю ?
да простите за суматоху у меня nl2br добавляет <br />, не так / поставил.
10. Мелкий - 04 Марта, 2011 - 16:27:32 - перейти к сообщению
broshurkaplus пишет:
смущает то что если пользователь вместо " использует 'и' тоне выдаст ли \'\'
что некорректно отобразится при выдаче контента пользователю ?
что некорректно отобразится при выдаче контента пользователю ?
Смотря где смотреть. До сохранения в базе - будет экранирование. При извлечении данных - не будет.
Да, этих 3-х функций вполне достаточно.
Только к элементам ассоциативного массива обращайтесь так: $_POST['str'], ключ в кавычки надо заключать. Правильнее и ошибок не будет, если вдруг объявите константу с именем, совпадающем с именем ключа.
11. broshurkaplus - 04 Марта, 2011 - 17:06:57 - перейти к сообщению
поставил в скрипт
$_POST[str]= mysql_real_escape_string($_POST[str])
$_POST[str]= htmlspecialchars($_POST[str])
$_POST[str]=nl2br($_POST[str]);
а он из базы при таком порядке функций возвращает всё в одну строку, в базе нет <br />
хотя при просмотре кода страницы строки отображаются как надо и <br /> нету
может порядок функций изменить ? ща попробую
в чем дело?
(Добавление)
да, эти функции защищают, но мне нужно из базы выводить данные с <br /> для отображения новых строк, а при таком- строки выводятся в одну строку! хотя по идее мы ведь сначала делаем преобразования а затем добав. <br />
может есть другая функ вместо nl2br
а то данные выводятся не корректно, браузер - хром
как поступить?
$_POST[str]= mysql_real_escape_string($_POST[str])
$_POST[str]= htmlspecialchars($_POST[str])
$_POST[str]=nl2br($_POST[str]);
а он из базы при таком порядке функций возвращает всё в одну строку, в базе нет <br />
хотя при просмотре кода страницы строки отображаются как надо и <br /> нету
может порядок функций изменить ? ща попробую
в чем дело?
(Добавление)
да, эти функции защищают, но мне нужно из базы выводить данные с <br /> для отображения новых строк, а при таком- строки выводятся в одну строку! хотя по идее мы ведь сначала делаем преобразования а затем добав. <br />
может есть другая функ вместо nl2br
а то данные выводятся не корректно, браузер - хром
как поступить?
12. OrmaJever - 04 Марта, 2011 - 17:34:29 - перейти к сообщению
broshurkaplus надо понимать зачем каждая функция, а не тупо липить всё в подряд.
А в одну строку пишет потому что \n заменяется на <br>
А в одну строку пишет потому что \n заменяется на <br>
13. broshurkaplus - 04 Марта, 2011 - 19:21:51 - перейти к сообщению
OrmaJever пишет:
А в одну строку пишет потому что \n заменяется на <br>
можно тут поподробнее
я уже почитал про функции. нужно ведь и защититься и вывести в нужном формате
если не использовать nl2br, то в бд строки отдельно а на странице всё в одну,
а так мы переводим стоку в обязательном порядке
наскоко помню nl2br добавляет <br/> перед каждым переводом строки
(как добавить \n- новая строка при выводе из базы)
?
14. OrmaJever - 04 Марта, 2011 - 20:01:47 - перейти к сообщению
broshurkaplus пишет:
нужно ведь и защититься и вывести в нужном формате
Защищатся и выводить в нужном формате это разные вещи.
mysql_escape_string() - от sql
htmlspecialchars() - от xss
не как не меняют вывод.
broshurkaplus пишет:
наскоко помню nl2br добавляет <br/> перед каждым переводом строки
Немножко не верно описано, она не добавляет а заменяет \n на <br/>.
Если нужно оставить \n можно использовать str_replace()
15. broshurkaplus - 06 Марта, 2011 - 18:13:39 - перейти к сообщению
блин
подскажите как правильно использовать
уже устал пробовать
в бд строки разделены, в при выводе значения поля запросом из бд все строки слитно!
подскажите как правильно использовать
уже устал пробовать
в бд строки разделены, в при выводе значения поля запросом из бд все строки слитно!