Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> защита сайта - фильтрация символов, подскажите с фильтрацией. Прав ли я? 
V
    Опции темы
Teleport
Дата 25.9.2008, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



вот мой сайт имеет такой вид:
Код

<?php session_start()?>
<html>
<head>
  <title></title>
</head>
<body>
<a href="index.php?pshow=index">Главная</a><br>
<a href="index.php?pshow=vivod">Вывод на страницу</a><br>
<a href="index.php?pshow=contacts">Контакты</a><br>

<?php

if($_GET['pshow'])  //тут начало проверки на опасные символы
{
$_GET['pshow'] = htmlspecialchars((stripslashes($_GET['pshow'])), ENT_QUOTES);
$_GET['pshow'] = str_replace("/","",$_GET['pshow']);
$_GET['pshow'] = str_replace(".","",$_GET['pshow']);
$_GET['pshow']=  str_replace("`","",$_GET['pshow']);

switch($_GET['pshow'])
{
    case 'index':
     echo "Главная страница"; //тут можно вставлять любые переменные
    break;

     case 'contacts':
     echo "Тут наши контакты"; //тут можно вставлять любые переменные
    break;

    case 'vivod':

      // Данные для mysql сервера
     $dbhost = "localhost"; // Хост
     $dbuser = "1"; // Имя пользователя
     $dbpassword = "1"; // Пароль
     $dbname = "bd_risunki"; // Имя базы данных

      $link = mysql_connect($dbhost, $dbuser, $dbpassword) or die("невозможно соедениться");
      mysql_select_db($dbname, $link) or die("невозможно выбрать");
      $query= "SELECT * FROM list";
      $query_x= mysql_query($query, $link)or die("Невозможно выполнить запрос");

          while ($row= mysql_fetch_array($query_x))
      {
           $id= $row['id'];
           $pole1= $row['pole1'];
           $pole2= $row['pole2'];

            $my_pe4at.=     //эта переменная формирует вывод
             "
               $id
               $pole1
               $pole2 <br>
             ";

        }

      echo "$my_pe4at";
      // Закрываем соединение
      mysql_close($link);
    break;

}
}

?>
</body>
</html>


сайт обращается к бд bd_risunki. В ней только одна таблица - list. В таблице 3 поля: id, pole1, pole2.

Переменные передаются методом GET. Вопрос - я вот организовал вроде фильтрацию символов. Правильно ли я ее организовал?
Еще вопрос - какие рекомендации будут еще по защите этого сайта?
Благодарен за любые рекомендации.

Это сообщение отредактировал(а) Teleport - 25.9.2008, 15:49


--------------------
user posted image
user posted image 
PM MAIL   Вверх
teroni
Дата 25.9.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Да тут враг не пройдёт...
Тут же нужная страница выбирается с помощью switch($_GET['pshow']) case...
Даже если кто-то введёт в $_GET['pshow'] что-то гадкое, то оно все равно не совпадёт ни с одним из case.
PM MAIL   Вверх
source777
Дата 25.9.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Тут и защищать то нечего пока...
Тов. Teleport наврядли сможет объяснить зачем тут ему код: 
Код

if($_GET['pshow']) 
{
$_GET['pshow'] = htmlspecialchars((stripslashes($_GET['pshow'])), ENT_QUOTES);
$_GET['pshow'] = str_replace("/","",$_GET['pshow']);
$_GET['pshow'] = str_replace(".","",$_GET['pshow']);
$_GET['pshow']=  str_replace("`","",$_GET['pshow']);



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Teleport
Дата 25.9.2008, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 teroni  - я новичек. Выполняю сайт на заказ для фирмы. проблем с выполнением сайта под их требования вроде нету. Но вот защитить охота этот сайт...  Получается моя фильтрация лишняя?

Добавлено через 3 минуты и 59 секунд
2 source777  - данный код я взял отсюда защита.
Это рассматривалось для $_POST. Но говорилось, что для $_GET тоже можно использовать. Что делает этот код я знаю. 


--------------------
user posted image
user posted image 
PM MAIL   Вверх
source777
Дата 25.9.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(Teleport @  25.9.2008,  16:08 Найти цитируемый пост)
2 source777  - данный код я взял отсюда защита.
Это рассматривалось для $_POST. Но говорилось, что для $_GET тоже можно использовать. Что делает этот код я знаю.  
Ну так я так и понял, что это бездумный Copy-Paste, а вот тебе надо подумать зачем оно тут тебе? Что измениться, если этот код убрать?



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
Teleport
Дата 25.9.2008, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 source777 - продуманный или бездумный  - тебе это точно не видно  smile 
Я могу думать не совсем правильно - вот это верно. А бездумно я не делаю. Прошу иметь это ввиду.
Вопрос в том, что я не знаю, как можно ломануть мой сайт. Поэтому и ищу разную инфу по инету по защите сайта. 
Вот в строку броузера  можно вводить символы, а символы могут представлять опасность, значит их надо фильтровать... Вот так я и думал.  В чем же моя ошибка? Укажи, пожалуйста smile


--------------------
user posted image
user posted image 
PM MAIL   Вверх
source777
Дата 25.9.2008, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(Teleport @  25.9.2008,  16:34 Найти цитируемый пост)
А бездумно я не делаю. Прошу иметь это ввиду.
Тогда ответь на поставленный вопрос: Что изменится, если этот код убрать?


Цитата(Teleport @  25.9.2008,  16:34 Найти цитируемый пост)
Вопрос в том, что я не знаю, как можно ломануть мой сайт.
Если не знаешь, то либо ломать нечего, либо не сможешь защититься, третьего не дано.



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
bars80080
Дата 25.9.2008, 17:02 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



нужно знать всего две функции:

1. при организации запросов к БД вставлять пришедшие переменные в функции mysql_real_escape_string($x);
$sql = 'select * from table where id='.mysql_real_escape_string($_GET['id']);

2. при выводе данных в браузер htmlspecialchars(); чтобы не проскочили всякие тэги
echo htmlspecialchars($perem);
PM MAIL WWW   Вверх
americanets
Дата 25.9.2008, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



ну и где явно должно быть int для ввода в базу
Код

intval( trim($PARAM) );



--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Teleport
Дата 25.9.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



2 source777 я считаю, что этот код просто защищает от интерпритации опасных символов. Если его убрать, то защиты не будет. Я так думаю. 
Цитата

Если не знаешь, то либо ломать нечего, либо не сможешь защититься, третьего не дано.

Так я и не спорю. Вот я и пытаюсь защититься. Если эта защита неправильна, то ведь можно просто пояснить. А не вопросом на вопрос... :(

Добавлено через 4 минуты и 40 секунд
2 bars80080 - да, читал неоднократно. я вроде так и сделала на своем сайте - 
Код

$_GET['pshow'] = htmlspecialchars((stripslashes($_GET['pshow'])), ENT_QUOTES);


2 americanets - а твой ответ я вообще не понял...


--------------------
user posted image
user posted image 
PM MAIL   Вверх
Teleport
Дата 25.9.2008, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



более менее внятный ответ дал bars80080. Но правильно ли я применяю эти функции?

Это сообщение отредактировал(а) Teleport - 25.9.2008, 18:49


--------------------
user posted image
user posted image 
PM MAIL   Вверх
teroni
Дата 25.9.2008, 19:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Цитата(Teleport @  25.9.2008,  18:00 Найти цитируемый пост)
я считаю, что этот код просто защищает от интерпритации опасных символов. Если его убрать, то защиты не будет. Я так думаю. 

Это неправильно. В данном конкретном случае он просто бесполезен и если его убрать - то ничего не поменяется.
PM MAIL   Вверх
Teleport
Дата 25.9.2008, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 5.7.2008
Где: Прибалтика

Репутация: нет
Всего: 6



teroni - ясно. Спасибо. smile
А, например, защитить от дефейса? У меня на главной страничке много рисунков... А не просто надпись ведь - Главная страница.
Вообще какими спсобами можно навредить данному сайту? Хотя бы основные укажите? От чего следует защищаться?
У меня уже складывается впечатление, что я написал просто невзламываемый сайт....



Это сообщение отредактировал(а) Teleport - 25.9.2008, 19:35


--------------------
user posted image
user posted image 
PM MAIL   Вверх
bars80080
Дата 25.9.2008, 20:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(Teleport @  25.9.2008,  18:00 Найти цитируемый пост)
я вроде так и сделала на своем сайте - 

$_GET['pshow'] = htmlspecialchars((stripslashes($_GET['pshow'])), ENT_QUOTES);
 stripslashes - функция для уборки лишних слэшей, при выемке данных из БД, причём только в том члучае, если при внесении данных была применена функция addslashes. при чтении приходящих переменных - она только навредит. (к примеру, пользователь в текстовом поле упомянул ссылку http:// , а ты не собираешься заносить данные в БД, а решишь их вывести в браузер - тогда она будет жёстко урезана. в случае обратной ситуации, лишним оказывается htmlspecialchars)

нужно последовательно работать с данными. при внесении данных - только mysql_real_escape_string,
при выдаче в браузер - только htmlspecialchars
и проблем не будет

PM MAIL WWW   Вверх
yurik_l
Дата 26.9.2008, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


тарантиноман



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 17.9.2006

Репутация: 1
Всего: 3



Цитата(bars80080 @  25.9.2008,  20:37 Найти цитируемый пост)
к примеру, пользователь в текстовом поле упомянул ссылку http:// , а ты не собираешься заносить данные в БД, а решишь их вывести в браузер - тогда она будет жёстко урезана


Только что проверил:
Код

echo stripslashes("http://forum.vingrad.ru");

выводит без изменений
Код

http://forum.vingrad.ru

PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.