|
|
|
| Люди, скиньте пожалуйста ссылки или расскажите о размещении нового сайта (есть одна-две БД MySQL для гостевой книги). Короче, я в безопасности БД и сайтов плохо шарю! Дома-то сайт и БД создавать безопасно (с помощью denwer, localhost и т.д.), а вот когда дело дошло до Internet - решил заручиться поддержкой и советами грамотных людей!
Что нужно в файлах .htaccess писать, что хостеру надо сказать или у него спросить :)
Заранее спасибо! | |
|
|
|
|
|
|
|
для: Sake
(22.10.2008 в 15:18)
| | Звучит примерно как "где хранить зубную щетку, чтобы машину не угнали?" | |
|
|
|
|
|
|
|
для: Loki
(22.10.2008 в 17:03)
| | Ну, спасибо за грамотный ответ! :) Только что здесь смешного? Я никогда сайт в сети ещё не размещал, просто спрашиваю: как обеспечить его безопасность. Первый блин всегда комом! | |
|
|
|
|
|
|
|
для: Sake
(22.10.2008 в 15:18)
| | Писать "что-то в .htaccess" или "сказать хостеру" недостаточно ))
Думаю, все же основная ответственность за безопасность лежит на программисте.
Нужно следить за использованием,выводом переменных (особенно в MySQL запросах).
Нюансов достаточно!
Так что советую начать с чтения этих ссылок:
http://www.softtime.ru/info/articlephp.php?id_article=35
http://www.softtime.ru/info/articlephp.php?id_article=36
http://www.softtime.ru/info/articlephp.php?id_article=34
также может пригодиться http://www.softtime.ru/article/index.php?id_article=97 | |
|
|
|
|
|
|
|
для: ddhvvn
(22.10.2008 в 22:20)
| | Первую статью не рекомендую.
[поправлено модератором] | |
|
|
|
|
|
|
|
для: BinLaden
(22.10.2008 в 22:34)
| | Чем же конкретно? | |
|
|
|
|
|
|
|
для: ddhvvn
(22.10.2008 в 22:47)
| | > Чтобы обезопасить себя от такого вида атак (говорится от XSS -- прим. BinLaden), следует отфильтровать значение, передаваемое через параметр username, например, при помощи регулярных выражений:
Запретим пользователю использовать "опасные символы".
Упоминание о htmlspecialchars() приведено ниже, скромно, как альтернативный вариантик и, главное для новичка, без примеров, зато "фильтрация", конечно, с примерами. Аж с двумя.
> header("plz_die.php");
Понятно.
Далее, "обезопасивание" приложения от SQL-инъекций:
<?php
// добавляем слеши перед кавычками, чтобы они стали виде escape-последовательности,
// например ' замениться на ', " замениться на "
$_POST['name'] = addslashes($_POST['name']);
// заменяем все специальные символы эквивалентом
$_POST['name'] = htmlspecialchars ($_POST['name']);
// отрезаем все ненужные симовлы
$_POST['name'] = preg_replace("/[^a-z0-9]/i", "", $_POST['name']);
?>
|
Нет ни одного упоминания о режиме magic_quotes_gpc, применяется почему-то addslashes() (причём автор статьи сам не знает что делает эта функция, если посмотреть на комментарий), к какому-то боку приплетена htmlspecialchars() и, главное, отрезаются "ненужные символы". Последнее просто не требует комментариев.
> if(!preg_match("|^[d]*$|", $_GET['id_theme'])) exit();
Тут опечатка: \d
> if ($_SERVER['REFERRER'] =! $site_address) die;
Еще две опечатки. Входит в систему.
> Не используйте проверку на возращение строки (mysql_num_rows()), а применяйте следующий подход:
> list($m_user, $m_pass) = mysql_fetch_row( mysql_query($sql) );
> if ( $pass != $m_pass or // даст TRUE, если пароли не равны
> $user != $m_user // данная проверка даст TRUE, если была sql инъекция
> )
[поправлено модератором] | |
|
|
|
|
|
|
|
для: Sake
(22.10.2008 в 15:18)
| | Не очень понятно, что добиться хотите...
>Что нужно в файлах .htaccess писать, что хостеру надо сказать или у него спросить :)
Мало информации о структуре сайта, чтобы посоветовать что-то конкретное. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2008 в 22:28)
| | Да всё просто! Короче, Гостевую книгу я уже создавал раз 5: со всеми проверками на ввод, сессиями и прочее. НО все эти 5 раз были на LOCALHOSTe. А теперь, когда надо сайт в Nete размещать, я не знаю как скрипт для работы с БД грамотно составить. Чем-то же он будет отличаться от того, который мы все без опасения используем дома???!!! | |
|
|
|
|
|
|
|
для: Sake
(23.10.2008 в 07:35)
| | Ничем не отличается...
Если хотите выводить текст в браузер, то:
$str = htmlspecialchars($str, ENT_QUOTES);
|
Есла заносить в БД, то:
if (!get_magic_quotes_gpc())
{
$str = mysql_escape_string($str);
}
|
Если надо проверить ЦЕЛОЕ ЧИСЛО, то:
Еще желательно проверять на пробелы:
ЗЫ. есть еще mysql_REAL_escape_string(), но я не знаю чем он отличается от mysql_escape_string(), если кто раскажет, буду благодарен :) | |
|
|
|
|
|
|
|
для: DEM
(23.10.2008 в 10:14)
| | http://www.minskteam.com/php/function.mysql-escape-string.html
а именно:
Функция [mysql_escape_string()] идентична mysql_real_escape_string(), исключая то, что mysql_real_escape_string() принимает параметром ещё и указатель на соединение и экранирует в зависимости от кодировки. mysql_escape_string() не делает этого и результат работы не зависит от кодировки, в который вы работаете с БД. | |
|
|
|
|
|
|
|
для: DEM
(23.10.2008 в 10:14)
| | > Есла заносить в БД, то:
>if (!get_magic_quotes_gpc())
>{
> $str = mysql_escape_string($str);
>}
Не, просто
<?php
$esc_str = mysql_escape_string($str);
?>
|
> Если надо проверить ЦЕЛОЕ ЧИСЛО, то:
Если надо привести, а не проверить. Проверяют чем-то другим. | |
|
|
|