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

Разное

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Помогите pls новичку сайт грамотно разместить в великом Nete
 
 автор: Sake   (22.10.2008 в 15:18)   письмо автору
 
 

Люди, скиньте пожалуйста ссылки или расскажите о размещении нового сайта (есть одна-две БД MySQL для гостевой книги). Короче, я в безопасности БД и сайтов плохо шарю! Дома-то сайт и БД создавать безопасно (с помощью denwer, localhost и т.д.), а вот когда дело дошло до Internet - решил заручиться поддержкой и советами грамотных людей!

Что нужно в файлах .htaccess писать, что хостеру надо сказать или у него спросить :)
Заранее спасибо!

  Ответить  
 
 автор: Loki   (22.10.2008 в 17:03)   письмо автору
 
   для: Sake   (22.10.2008 в 15:18)
 

Звучит примерно как "где хранить зубную щетку, чтобы машину не угнали?"

  Ответить  
 
 автор: Sake   (22.10.2008 в 21:58)   письмо автору
 
   для: Loki   (22.10.2008 в 17:03)
 

Ну, спасибо за грамотный ответ! :) Только что здесь смешного? Я никогда сайт в сети ещё не размещал, просто спрашиваю: как обеспечить его безопасность. Первый блин всегда комом!

  Ответить  
 
 автор: ddhvvn   (22.10.2008 в 22:20)   письмо автору
 
   для: 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

  Ответить  
 
 автор: BinLaden   (22.10.2008 в 22:34)   письмо автору
 
   для: ddhvvn   (22.10.2008 в 22:20)
 

Первую статью не рекомендую.

[поправлено модератором]

  Ответить  
 
 автор: ddhvvn   (22.10.2008 в 22:47)   письмо автору
 
   для: BinLaden   (22.10.2008 в 22:34)
 

Чем же конкретно?

  Ответить  
 
 автор: BinLaden   (22.10.2008 в 23:50)   письмо автору
 
   для: 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 инъекция
> )


[поправлено модератором]

  Ответить  
 
 автор: cheops   (22.10.2008 в 22:28)   письмо автору
 
   для: Sake   (22.10.2008 в 15:18)
 

Не очень понятно, что добиться хотите...

>Что нужно в файлах .htaccess писать, что хостеру надо сказать или у него спросить :)
Мало информации о структуре сайта, чтобы посоветовать что-то конкретное.

  Ответить  
 
 автор: Sake   (23.10.2008 в 07:35)   письмо автору
 
   для: cheops   (22.10.2008 в 22:28)
 

Да всё просто! Короче, Гостевую книгу я уже создавал раз 5: со всеми проверками на ввод, сессиями и прочее. НО все эти 5 раз были на LOCALHOSTe. А теперь, когда надо сайт в Nete размещать, я не знаю как скрипт для работы с БД грамотно составить. Чем-то же он будет отличаться от того, который мы все без опасения используем дома???!!!

  Ответить  
 
 автор: DEM   (23.10.2008 в 10:14)   письмо автору
 
   для: Sake   (23.10.2008 в 07:35)
 

Ничем не отличается...
Если хотите выводить текст в браузер, то:
$str = htmlspecialchars($str, ENT_QUOTES);

Есла заносить в БД, то:
if (!get_magic_quotes_gpc())
{
  $str =  mysql_escape_string($str);
}

Если надо проверить ЦЕЛОЕ ЧИСЛО, то:
$int = intval($int);


Еще желательно проверять на пробелы:
$str = trim($str);


ЗЫ. есть еще mysql_REAL_escape_string(), но я не знаю чем он отличается от mysql_escape_string(), если кто раскажет, буду благодарен :)

  Ответить  
 
 автор: mechanic   (23.10.2008 в 10:23)   письмо автору
 
   для: 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() не делает этого и результат работы не зависит от кодировки, в который вы работаете с БД.

  Ответить  
 
 автор: BinLaden   (23.10.2008 в 17:10)   письмо автору
 
   для: DEM   (23.10.2008 в 10:14)
 

> Есла заносить в БД, то:

>if (!get_magic_quotes_gpc())
>{
> $str = mysql_escape_string($str);
>}

Не, просто

<?php
$esc_str 
=  mysql_escape_string($str);
?>


> Если надо проверить ЦЕЛОЕ ЧИСЛО, то:
Если надо привести, а не проверить. Проверяют чем-то другим.

  Ответить  
Rambler's Top100
вверх

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