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

Форум PHP

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

 

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

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

тема: htmlspecialchars на все $_POST
 
 автор: Maxys   (05.10.2010 в 14:37)   письмо автору
 
 

К сожалению только сейчас задумался над тем что хотелось бы запретить использование любого html тега для пользователей и добавить bbcode.
По этому что бы не искать каждое поле и добавлять эту проверку, я подумал, правильно ли будет сделать в верхушке обратки такую вот вещь

if ($_POST) {
    foreach($_POST as $k=>$v) {
        $_POST[$k] = htmlspecialchars($v);
    }
}

Или это не правильно/критично/уязвимо?

  Ответить  
 
 автор: sim5   (05.10.2010 в 14:43)   письмо автору
 
   для: Maxys   (05.10.2010 в 14:37)
 

И зачем вам htmlspecialchars над полученными данными? Вы что их в таком виде и хранить собираетесь?

  Ответить  
 
 автор: Maxys   (05.10.2010 в 14:47)   письмо автору
 
   для: sim5   (05.10.2010 в 14:43)
 

Я хочу что бы пользователи не смогли при редактировании профиля вписать допустим себе
<b>свой ник</b>
, но в каждую строчку отдельно теперь вписать эту проверку займёт долго времени, а при вносе в базу данных я уже использую mysql_real_escape_string(); по идее она защищает от sql inject'ов. Я прав?

  Ответить  
 
 автор: sim5   (05.10.2010 в 14:49)   письмо автору
 
   для: Maxys   (05.10.2010 в 14:47)
 

Чтобы они не могли вписывать, значит это надо вырезать, а вот htmlspecialchars пременять при выводе данных из базы, а не перед помещением ее в оную.
У mysql_real_escape_string иные задачи, нежели у htmlspecialchars.

  Ответить  
 
 автор: Maxys   (05.10.2010 в 14:54)   письмо автору
 
   для: sim5   (05.10.2010 в 14:49)
 

Не могли бы вы подсказать какой функцией мне вырезать? Не explode() или substr() же.

У mysql_real_escape_string на сколько я знаю меняются ковычки и слеши, которые не позволяют использовать sql inject'ы.

  Ответить  
 
 автор: sim5   (05.10.2010 в 15:00)   письмо автору
 
   для: Maxys   (05.10.2010 в 14:54)
 

Функция вырезающая теги только одна - strip_tags, но она не гарантирует полный успех. Применяйте htmlspecialchars() и все теги введенные пользователем будут несостоятельны, но при любом выводе в браузер, а не при помещении в базу.

  Ответить  
 
 автор: Maxys   (05.10.2010 в 15:13)   письмо автору
 
   для: sim5   (05.10.2010 в 15:00)
 

Понятно, огромное спасибо за овтеты. Буду знать.

  Ответить  
 
 автор: sim5   (05.10.2010 в 15:21)   письмо автору
 
   для: Maxys   (05.10.2010 в 15:13)
 

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

  Ответить  
 
 автор: Красная_шляпа   (05.10.2010 в 17:29)   письмо автору
 
   для: Maxys   (05.10.2010 в 14:37)
 

$_POST = array_map("htmlspecialchars", $_POST);

  Ответить  
 
 автор: sim5   (05.10.2010 в 17:30)   письмо автору
 
   для: Красная_шляпа   (05.10.2010 в 17:29)
 

Еще один любитель мусора. А он вам нужен?

  Ответить  
 
 автор: Flok   (05.10.2010 в 23:03)   письмо автору
 
   для: sim5   (05.10.2010 в 17:30)
 

разве проще по 100 раз вычищать строки от хтмл кода при каждом выводе, нежели один раз вычистить да занести это в базу?

я думаю, что жертвование местом на жёстком диске - это куда лучше, чем жертвование производительностью. Ведь более быстро скрипт выполнится без лишних htmlspecialchars, чем с ними )

  Ответить  
 
 автор: heed   (06.10.2010 в 00:43)   письмо автору
 
   для: Flok   (05.10.2010 в 23:03)
 

тем более мешает хранить настоящие теги там-же :)
но с другой стороны это мелочи по сравнению с хранением bb-тегов в таблицах.
htmlspecialchars() тихо курит в сторонке.

  Ответить  
 
 автор: sim5   (06.10.2010 в 05:10)   письмо автору
 
   для: Flok   (05.10.2010 в 23:03)
 

Ваше утверждение равно примерно этому - пару носков среди носков в ящике для носков искать удобнее, если в ящик добавить и портянки.

  Ответить  
 
 автор: Рома   (05.10.2010 в 22:29)   письмо автору
 
   для: Maxys   (05.10.2010 в 14:37)
 

а вы попробуйте написать функцию выборки из бд, которая будет автоматом выполнять htmlspecialchars, если у нее не указан второй параметр false например, который говорит, что не нужно этого делать. тогда у вас любые данные по умолчанию будут обрабатываться о т xss

  Ответить  
 
 автор: psychomc   (06.10.2010 в 01:57)   письмо автору
 
   для: Рома   (05.10.2010 в 22:29)
 

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

  Ответить  
Rambler's Top100
вверх

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