|
| |
|
|
| |
для: Владимир55
(17.12.2007 в 02:08)
| | | Если излагать грубо и на пальцах...
В файлах Вы храните текст.
От пользователя принимаете тоже текст.
Пользователю собитраетесь показывать опять таки текст. Ну и элементы навигации - это уже html
Браузер не умеет показывать текст.
Браузер умеет показывать только html.
Элементы навигации уже в html - их преобразовывать не надо.
А вот текст - это не гипертекст, по своей сути это разные языки.
Поэтому перед тем как добавлять элементы навигации к тексту, этот текст нужно в html преобразовать.
Чем собственно вышеупомянутая функция (вкупе с nl2br) и занимается.
JS-код может быть встроен в теги html. В чистом (или plain, если по английски) тексте код появиться не может. В html из htmlspecialchars код не проходит, потому как эта функция преобразует к видимому тексту все символы, из которых можно составить теги. | |
| |
|
|
| |
|
|
| |
для: Trianon
(17.12.2007 в 00:59)
| | | А где функцию htmlspecialchars надо поставить?
Сколько ни читал Самоучитель, её истинной сущности так и не понял. Ведь она не изменяет код, верно? Если ею обработать переменную непосредственно перед выводом в броузер (echo, print), то воспроизведется код, но исполнения этого кода не будет. А если текст обработать htmlspecialchars, а потом сохранить его в файле, предварительно приплюсовав к другому тексту, и уж после этого вывести в броузер, то код исполнится.
Или как? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.12.2007 в 20:33)
| | | >Может, поставить
>$text = htmlspecialchars($text);
Если Вы это не поставите, то текстовый контент в браузер Вы выкинуть просто напросто не сможете.
Сможете лишь html-ный.
А если к тому же генерируемый пользователем текст сохраняется в файлах, чьи типы потом подбирает php-обработчик, то вот Вам и прямая дыра. | |
| |
|
|
| |
|
|
| |
для: mihdan
(16.12.2007 в 23:28)
| | | Я полагаю, что примерно так и есть.
Сейчас я выключил все свои сайты, а в системе протекает 45 процессов, потребляющих 270 Мбайт памяти! Их большая часть относится к апачу, но есть sh и даже mysqld...
И что со всем этим делать? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(15.12.2007 в 23:30)
| | | Все просто - вам залили шел-скрипт через дыру в одном из скриптов | |
| |
|
|
| |
|
|
| |
для: Faraon
(16.12.2007 в 20:06)
| | | Да требований никаких нет - что один человек напишет, то другие прочитают. Может, поставить
$text = htmlspecialchars($text);
|
| |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.12.2007 в 20:02)
| | | Насчет текствого файла,думаю некчему,
смотря какие у вас требования к контексту файла | |
| |
|
|
| |
|
|
| |
для: Faraon
(16.12.2007 в 19:52)
| | | Нет, в базу данных не заношу.
Через форму вводится или пароль доступа, или отзыв посетителя на содержание страницы, который записывается в текстовый файл и потом выводится при просмотре.
Нужно ли здесь принять какие-то меры? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.12.2007 в 19:45)
| | | >В разных местах введенная информация обрабатывается по разному
Если при заносе в БД, используйте mysql_escape_string | |
| |
|
|
| |
|
|
| |
для: Владимир55
(16.12.2007 в 01:00)
| | | Размышляю над тем, как подсунули вредоносный код на сайт. Есть несколько таких формочек ввода информации:
$f2 = '<form method="post">
<input type="text" name="pass">
<input type="submit" value="Ввести.">
</form>';
@$pass = $_POST['pass'];
if (!$pass)
{
echo "<br>$f2";
die(); // Остановка скрипта
}
|
В разных местах введенная информация обрабатывается по разному, но нигде нет никакой защиты на случай, если вместо текста введут какой-нибудь код.
Можно ли считать, что это "дыра" в сайте?
Как эту дыру залатать? | |
| |
|
|
|