|
|
|
| К сожалению только сейчас задумался над тем что хотелось бы запретить использование любого html тега для пользователей и добавить bbcode.
По этому что бы не искать каждое поле и добавлять эту проверку, я подумал, правильно ли будет сделать в верхушке обратки такую вот вещь
if ($_POST) {
foreach($_POST as $k=>$v) {
$_POST[$k] = htmlspecialchars($v);
}
}
|
Или это не правильно/критично/уязвимо? | |
|
|
|
|
|
|
|
для: Maxys
(05.10.2010 в 14:37)
| | И зачем вам htmlspecialchars над полученными данными? Вы что их в таком виде и хранить собираетесь? | |
|
|
|
|
|
|
|
для: sim5
(05.10.2010 в 14:43)
| | Я хочу что бы пользователи не смогли при редактировании профиля вписать допустим себе , но в каждую строчку отдельно теперь вписать эту проверку займёт долго времени, а при вносе в базу данных я уже использую mysql_real_escape_string(); по идее она защищает от sql inject'ов. Я прав? | |
|
|
|
|
|
|
|
для: Maxys
(05.10.2010 в 14:47)
| | Чтобы они не могли вписывать, значит это надо вырезать, а вот htmlspecialchars пременять при выводе данных из базы, а не перед помещением ее в оную.
У mysql_real_escape_string иные задачи, нежели у htmlspecialchars. | |
|
|
|
|
|
|
|
для: sim5
(05.10.2010 в 14:49)
| | Не могли бы вы подсказать какой функцией мне вырезать? Не explode() или substr() же.
У mysql_real_escape_string на сколько я знаю меняются ковычки и слеши, которые не позволяют использовать sql inject'ы. | |
|
|
|
|
|
|
|
для: Maxys
(05.10.2010 в 14:54)
| | Функция вырезающая теги только одна - strip_tags, но она не гарантирует полный успех. Применяйте htmlspecialchars() и все теги введенные пользователем будут несостоятельны, но при любом выводе в браузер, а не при помещении в базу. | |
|
|
|
|
|
|
|
для: sim5
(05.10.2010 в 15:00)
| | Понятно, огромное спасибо за овтеты. Буду знать. | |
|
|
|
|
|
|
|
для: Maxys
(05.10.2010 в 15:13)
| | Если вы все таки хотите бороться за "чистоту" на своих страницах, то вырезать аккуратно лишнее из данных, это рег. выражения. | |
|
|
|
|
|
|
|
для: Maxys
(05.10.2010 в 14:37)
| | $_POST = array_map("htmlspecialchars", $_POST); | |
|
|
|
|
|
|
|
для: Красная_шляпа
(05.10.2010 в 17:29)
| | Еще один любитель мусора. А он вам нужен? | |
|
|
|
|
|
|
|
для: sim5
(05.10.2010 в 17:30)
| | разве проще по 100 раз вычищать строки от хтмл кода при каждом выводе, нежели один раз вычистить да занести это в базу?
я думаю, что жертвование местом на жёстком диске - это куда лучше, чем жертвование производительностью. Ведь более быстро скрипт выполнится без лишних htmlspecialchars, чем с ними ) | |
|
|
|
|
|
|
|
для: Flok
(05.10.2010 в 23:03)
| | тем более мешает хранить настоящие теги там-же :)
но с другой стороны это мелочи по сравнению с хранением bb-тегов в таблицах.
htmlspecialchars() тихо курит в сторонке. | |
|
|
|
|
|
|
|
для: Flok
(05.10.2010 в 23:03)
| | Ваше утверждение равно примерно этому - пару носков среди носков в ящике для носков искать удобнее, если в ящик добавить и портянки. | |
|
|
|
|
|
|
|
для: Maxys
(05.10.2010 в 14:37)
| | а вы попробуйте написать функцию выборки из бд, которая будет автоматом выполнять htmlspecialchars, если у нее не указан второй параметр false например, который говорит, что не нужно этого делать. тогда у вас любые данные по умолчанию будут обрабатываться о т xss | |
|
|
|
|
|
|
|
для: Рома
(05.10.2010 в 22:29)
| | для таких вещей логичнее применять шаблонизатор. ведь выборка из бд это одно, а представление данных на страницах это другое. пусть лучше функции для работы с бд другими делами занимаются.
имхо | |
|
|
|