|
|
|
| >PS Кстати, перед выводом значений вроде $_POST['user'] в окно браузера их лучше всегда обрабатывать при помощи функции htmlspecialchars().
Не совсем понял, зачем нужно прогонять массив $_POST['user'] функцией htmlspecialchars() при выводе значения <input type="text">?
Перед занесением в БД все равно же нужно будет прогнать текст через htmlspecialchars() и mysql_real_escape_string().
В случае, если в $_POST['user'] подставляется значение из COOKIE и в значении есть HTML-символ, то он будет экранироваться. При этом, экранированный символ в массиве $_POST['user'] сохраняется в COOKIE и при повторном выводе, произойдет повторное экранирование.
Например, имя пользователя Nilil's. Он отправляет комментарий, при этом в куки записывается следующее: Nilil\'s и это значение выводится в $_POST['user']. Затем пользователь еще раз оставляет комментарий и имя из Nilil\'s превращается в Nilil\\\'s.
Получается бесконечное экранирование html-символов.
Я правильно мыслю? | |
|
|
|
|
|
|
|
для: denser
(23.05.2011 в 17:26)
| | при записи в базу htmlspecialchars() не нужно использовать | |
|
|
|
|
|
|
|
для: Valick
(23.05.2011 в 17:35)
| | Только при выводе на страницу? А если при записи в БД, то это будет считаться плохим программированием? | |
|
|
|
|
|
|
|
для: denser
(23.05.2011 в 17:38)
| | ну это примерно то же самое что наждачку взамест туалетной бумаги использовать :)
после выборки из базы и перед выводом в браузер много чего может скрипт наделать с текстом, аштмлспешалчарс добавит Вам головной боли
так что лучше не мешать котлеты с мухами раньше времени :) | |
|
|
|
|
|
|
|
для: denser
(23.05.2011 в 17:38)
| | >Только при выводе на страницу? А если при записи в БД, то это будет считаться плохим
>программированием?
Не удобно будет, вам возможно захочется отредактировать код, а в базе будут уже HTML-безопасное представление, если вы добавляете какой-то текст, обрабатывать при редактировании текст при помощи htmlspecialchars() или нет? Если обработаете, все предыдущие HTML-представления будут искажены, если не обработаете - новые HTML-представления не будут обработаны. В общем лучше в базу данных помещать оригинальный текст, а его обработку осуществлять при выводе из базы данных. | |
|
|
|
|
|
|
|
для: denser
(23.05.2011 в 17:26)
| | >В случае, если в $_POST['user'] подставляется значение из COOKIE и в значении есть HTML-
>символ, то он будет экранироваться. При этом, экранированный символ в массиве $_POST['user']
>сохраняется в COOKIE и при повторном выводе, произойдет повторное экранирование.
Так произойдет, если у вас включен режим магических кавычек. Поэтому перед экранированием необходимо обязательно проверять включен он у вас на сервере или нет
<?php
if (!get_magic_quotes_gpc())
{
$_POST['user'] = mysql_escape_string($_POST['user']);
}
?>
|
| |
|
|
|