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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Мой скрипт рассылает спам

Сообщения:  [1-10]   [11-16] 

 
 автор: Trianon   (17.12.2007 в 03:37)   письмо автору
 
   для: Владимир55   (17.12.2007 в 02:08)
 

Если излагать грубо и на пальцах...
В файлах Вы храните текст.
От пользователя принимаете тоже текст.
Пользователю собитраетесь показывать опять таки текст. Ну и элементы навигации - это уже html
Браузер не умеет показывать текст.
Браузер умеет показывать только html.
Элементы навигации уже в html - их преобразовывать не надо.
А вот текст - это не гипертекст, по своей сути это разные языки.
Поэтому перед тем как добавлять элементы навигации к тексту, этот текст нужно в html преобразовать.
Чем собственно вышеупомянутая функция (вкупе с nl2br) и занимается.
JS-код может быть встроен в теги html. В чистом (или plain, если по английски) тексте код появиться не может. В html из htmlspecialchars код не проходит, потому как эта функция преобразует к видимому тексту все символы, из которых можно составить теги.

   
 
 автор: Владимир55   (17.12.2007 в 02:08)   письмо автору
 
   для: Trianon   (17.12.2007 в 00:59)
 

А где функцию htmlspecialchars надо поставить?

Сколько ни читал Самоучитель, её истинной сущности так и не понял. Ведь она не изменяет код, верно? Если ею обработать переменную непосредственно перед выводом в броузер (echo, print), то воспроизведется код, но исполнения этого кода не будет. А если текст обработать htmlspecialchars, а потом сохранить его в файле, предварительно приплюсовав к другому тексту, и уж после этого вывести в броузер, то код исполнится.

Или как?

   
 
 автор: Trianon   (17.12.2007 в 00:59)   письмо автору
 
   для: Владимир55   (16.12.2007 в 20:33)
 

>Может, поставить
>$text = htmlspecialchars($text);

Если Вы это не поставите, то текстовый контент в браузер Вы выкинуть просто напросто не сможете.
Сможете лишь html-ный.
А если к тому же генерируемый пользователем текст сохраняется в файлах, чьи типы потом подбирает php-обработчик, то вот Вам и прямая дыра.

   
 
 автор: Владимир55   (17.12.2007 в 00:06)   письмо автору
 
   для: mihdan   (16.12.2007 в 23:28)
 

Я полагаю, что примерно так и есть.

Сейчас я выключил все свои сайты, а в системе протекает 45 процессов, потребляющих 270 Мбайт памяти! Их большая часть относится к апачу, но есть sh и даже mysqld...

И что со всем этим делать?

   
 
 автор: mihdan   (16.12.2007 в 23:28)   письмо автору
 
   для: Владимир55   (15.12.2007 в 23:30)
 

Все просто - вам залили шел-скрипт через дыру в одном из скриптов

   
 
 автор: Владимир55   (16.12.2007 в 20:33)   письмо автору
 
   для: Faraon   (16.12.2007 в 20:06)
 

Да требований никаких нет - что один человек напишет, то другие прочитают. Может, поставить

$text = htmlspecialchars($text);

   
 
 автор: Faraon   (16.12.2007 в 20:06)   письмо автору
 
   для: Владимир55   (16.12.2007 в 20:02)
 

Насчет текствого файла,думаю некчему,
смотря какие у вас требования к контексту файла

   
 
 автор: Владимир55   (16.12.2007 в 20:02)   письмо автору
 
   для: Faraon   (16.12.2007 в 19:52)
 

Нет, в базу данных не заношу.

Через форму вводится или пароль доступа, или отзыв посетителя на содержание страницы, который записывается в текстовый файл и потом выводится при просмотре.

Нужно ли здесь принять какие-то меры?

   
 
 автор: Faraon   (16.12.2007 в 19:52)   письмо автору
 
   для: Владимир55   (16.12.2007 в 19:45)
 

>В разных местах введенная информация обрабатывается по разному
Если при заносе в БД, используйте mysql_escape_string

   
 
 автор: Владимир55   (16.12.2007 в 19:45)   письмо автору
 
   для: Владимир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();        // Остановка скрипта
    }

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

Можно ли считать, что это "дыра" в сайте?
Как эту дыру залатать?

   

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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