|
|
|
| Что нужно делать, чтобы защитить скрипты от взлома?
Достаточно ли обрабатывать все выводимые данные функцией htmlspecialchars(); А все данные, которые заносятся в Базу данных обрабатывать функцией mysql_escape_string(); | |
|
|
|
|
|
|
|
для: itica
(10.09.2006 в 17:28)
| | Хех, вопрос из серии "Как прожить до ста лет?" =)
На самом деле абсолютной защиты нет, а степеь ее надежности зависит только от развитости паранойи у разработчика:)
Серьезно - ответ "недостаточно". Все, что приходит от пользователя (включая куки) стоит проверять на соответствие ожидаемому типу (число, символ, дробное число, отрицательное, строка), на принадлежность диапазону возможных значений, на соответствие формату (формат e-mail'а, формат url'а); файл проверять на миме-тип, длинный текст на превышение размера.
Если развивать паранойу дальше (это не шутка), можно на "критичные" скрипты типа авторизации ставить тайм-аут выполнения, чтобы исключить возможность брутфорса; форму прошивать сессией и проверять реферер и User-Agent...
Словом, "лучше перебздить, чем недобздить" :) | |
|
|
|
|
|
|
|
для: itica
(10.09.2006 в 17:28)
| | >Достаточно ли обрабатывать все выводимые данные функцией htmlspecialchars(); А все данные,
>которые заносятся в Базу данных обрабатывать функцией mysql_escape_string();
Это необходимое условие, но не достаточное. Дыра может быть логической - тут от кода зависит. | |
|
|
|
|
|
|
|
для: cheops
(10.09.2006 в 21:36)
| | Слабо.
1)Проверяй поля на соответствие типам.
2)Проверяй и по максимуму ограничуй длину вводимых пользователем данных.
3)Проверяй регулярными выражениями
4)Защита от иньюктивных атак должна быть
5)Используй функции strip_tags(), addslashes, trim, +то что ты применяеш.
Удачи | |
|
|
|
|
|
|
|
для: cheops
(10.09.2006 в 21:36)
| | А не могли бы Вы привести конкретный пример? Все говорят, что небезопасно... а что реально можно сделать, если менять ' на ` и все htmlspecialchar'ить. Заранее огромное спасибо. | |
|
|
|
|
|
|
|
для: Ziq
(11.09.2006 в 22:42)
| | Ошибки могут быть самые различные, от неинициализированной переменной и включённой директивы register_globals http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1309, до возможности загрузки на сайт PHP-скриптов через форму для загрузки изображений. | |
|
|
|
|
|
|
|
для: itica
(10.09.2006 в 17:28)
| | >Что нужно делать, чтобы защитить скрипты от взлома?
код не распространять в инете...чем больше он разойдется..тем серьезнее надо будет его защитить.. | |
|
|
|
|
|
|
|
для: itica
(10.09.2006 в 17:28)
| | Спасибо! Буду соершенстовать защиту. Если будут вопросы напишу. | |
|
|
|
|
|
|
|
для: itica
(10.09.2006 в 17:28)
| | $filter_text = substr($_POST['text'],0,10000);
$filter_text = htmlspecialchars(stripslashes($filter_text));
$filter_text = ereg_replace(chr(10),"<br>",$filter_text);
$filter_text = ereg_replace(chr(13),"",$filter_text);
$filter_text = ereg_replace("'","'",$filter_text);
$filter_text = preg_replace("/\S{60,}/",""",$filter_text);
$filter_text = trim($filter_text );
А это непотянет для обработки входящего текста??? | |
|
|
|
|
|
|
|
для: KIM
(11.09.2006 в 08:58)
| | А не многовато символов для полученного текста? =) | |
|
|
|
|
|
|
|
для: KIM
(11.09.2006 в 08:58)
| | KIM, а теперь давайте сократим количество кода...:))
<?php
$text = mysql_escape_string(nl2br(trim(htmlentities(substr($_POST['text'], 0, 1000)))));
?>
|
| |
|
|
|
|
|
|
|
для: Unkind™
(11.09.2006 в 23:57)
| | А это влияет на скорость работы? Если незначительно, то несчитается!
А строки:
$filter_text = ereg_replace(chr(10),"<br>",$filter_text); // Полезая вещь!
$filter_text = ereg_replace(chr(13),"",$filter_text); // Тоже полезна!
$filter_text = ereg_replace("'","'",$filter_text); // Это вообще критично, ибо ' как я заметил мешается, но не обрабатывается спец функцией!
$filter_text = preg_replace("/\S{60,}/",""",$filter_text); // Избавление от косых (от перла), и для слов
они ненужны? Ведь это очень нужные вещи! | |
|
|
|
|
|
|
|
для: KIM
(13.09.2006 в 21:56)
| | > Это вообще критично, ибо ' как я заметил мешается, но не обрабатывается спец функцией!
А теперь читаем мануал:
'&' (ampersand) becomes '&'
'"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
''' (single quote) becomes ''' only when ENT_QUOTES is set.
'<' (less than) becomes '<'
'>' (greater than) becomes '>'
Example 2125. htmlspecialchars() example
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
|
А mysql_escape_string() вообще лишнее:
<?php
$a = array("/", "\\");
$b = array("/", "\");
if ( get_magic_quotes_gpc() ) $text = stripslashes($text);
$text = str_replace($a, $b, htmlspecialchars($text, ENT_QUOTES));
// и всё!
|
2 Kero: советую заглянуть в справочник http://php.net/mysql-escape-string | |
|
|
|
|
|
|
|
для: Unkind™
(11.09.2006 в 23:57)
| | mysql_escape_string();
Можно спросить-что функция из себя представляет? | |
|
|
|