| |
|
|
| | Никак не пойму, в чем сущность htmlspecialchars.
В Самоучителе приводится пример, когда оператором print выводится JS код, который на самом деле при этом исполняется, а не выводится И случай, когда этот код обработан
$text = htmlspecialchars($text);
|
После такой обработки код не исполнятся, а именно выводится броузером.
Но что же конкретно делает функция htmlspecialchars? Она изменяет код? Что-то убирает из него? Или что-то в него добавляет, какой-нибудь признак?
Что будет, если код, обработанный htmlspecialchars, выводить не сразу, а прежде сохранить в текстовом файле, потом извлечь из него запустить через echo?
А если будет два кода $text_1 и $text_2, каждый из которых неисполняем, но вместе образующие осмысленную программу? Допустим, ввели сначала $text_1 и обработали ее htmlspecialchars, а потом ввели $text_2 и тоже обработали htmlspecialchars, затем просуммировали и запустили - код исполнится?
$text_1 = '<sctipt languare="jsvsscript">';
$text_1 = htmlspecialchars ($text_1);
$text_2 = 'alert ("Privet"; </scripr>';
$text_2 = htmlspecialchars ($text_2);
$text = $text_1 . $text_2 ;
print $text ;
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(17.12.2007 в 10:44)
| | | >Никак не пойму, в чем сущность htmlspecialchars.
http://ru2.php.net/manual/ru/function.htmlspecialchars.php
>Что будет, если код, обработанный htmlspecialchars, выводить не сразу, а прежде сохранить в текстовом файле, потом извлечь из него запустить через echo?
Сохранит кто?
>А если будет два кода $text_1 и $text_2, каждый из которых неисполняем, но вместе образующие осмысленную программу? Допустим, ввели сначала $text_1 и обработали ее htmlspecialchars, а потом ввели $text_2 и тоже обработали htmlspecialchars, затем просуммировали и запустили - код исполнится?
Нет, не исполнится, поскольку эти две переменные будут содержать уже обработанный код | |
| |
|
|
| |
|
|
| |
для: Владимир55
(17.12.2007 в 10:44)
| | | А вы посмотрите HTML-код после работы htmlspecialchars и все поймете) Она, в частности, заменяет угловые скобки <> на их escape-последовательности, если не ошибаюсь, < и > Браузе их показывает как угловые скобки, но считает заключенное между ними не тегами, а текстом. И соответситвенно не исполняет. | |
| |
|
|
| |
|
|
| |
для: Киналь
(17.12.2007 в 11:49)
| | | Если так, то htmlentities() более надежно защищает от проникновения нежелательных кодов? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(17.12.2007 в 11:56)
| | | Нету надежной или ненадежной защиты.
Есть корректная обработка данных, побочным эффектом которой является защищенность скриптов от атак.
А чтобы определить сущность этой функции - нужно страницы в браузере смотреть не только в прямом окне, но и через "гл.меню/вид/в виде HTML" (если применяете IE) | |
| |
|
|