[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Безопасность
DeeKeiD
Привет всем, я неособо разбираюсь в безопасности функций пхп поетому прошу помочь.

№1
Код
<?
$page = isset($_GET['page'])?$_GET['page']:"general";

switch($x)
{
case "":
if (file_exists('modules/main/$x.tpl')) {
   include("modules/main/$x.tpl");
} else {
   include("404.php");
}
break;
}
?>

Интересует: безопасность,компактность,правильность

№2

.htaccess
Код

#RW On
DirectoryIndex index.php
RewriteEngine On
RewriteRule ^index$ index.php

# SEC
RewriteCond %{HTTP_REFERER} (weight) [NC,OR]
RewriteCond %{HTTP_REFERER} (drugs) [NC]
RewriteRule .* - [F]

Интересует: что можно добавить\изменить чтобы хоть както защитить сайт

№3

Пару советов нащёт POST,GET, include
Какие ошибки обычно допускают начинающе(в плане безопасности)

ну собсно буду благодарен за любую полезную и (!) понятную новичку информацию по защите,компактности и т.д. smile.gif



Спустя 22 минуты, 18 секунд (16.06.2009 - 16:48) FatCat написал(а):
Цитата (DeeKeiD @ 16.06.2009 - 17:25)
№1

Что за огрызок кода?
Совершенно непонятно, зачем создается переменная $page и откуда берется переменная $x - эти переменные являются важными для решения вопроса безопасности.

Спустя 4 минуты, 16 секунд (16.06.2009 - 16:52) glock18 написал(а):
Цитата
Пару советов нащёт POST,GET, include
Какие ошибки обычно допускают начинающе(в плане безопасности)

Не проверяют пришедшие данные на правильность.

PHP
$page = isset($_GET['page'])?$_GET['page']:"general";

switch(
$x)
{
case 
"":
if (
file_exists('modules/main/$x.tpl')) {
   include(
"modules/main/$x.tpl");
} else {
   include(
"404.php");
}
break;
}


ооочень странный блок-switch. Вы осознаете, что блок
PHP
if (file_exists('modules/main/$x.tpl')) {
   include(
"modules/main/$x.tpl");
} else {
   include(
"404.php");
}


сработает только, если $x - пустая строка.
Как думаете, у вас есть в папке modules/main файл .tpl? Очевидно, скрипт выдаст 404 ошибку. То есть подключит ваш 404.php.

Подумайте над этим.

Спустя 1 час, 23 минуты, 2 секунды (16.06.2009 - 18:15) DeeKeiD написал(а):
Цитата (FatCat @ 16.06.2009 - 13:48)
Цитата (DeeKeiD @ 16.06.2009 - 17:25)
№1

Что за огрызок кода?
Совершенно непонятно, зачем создается переменная $page и откуда берется переменная $x - эти переменные являются важными для решения вопроса безопасности.

огрызок взят из какойто cms, чесно говоря сам непонимаю зачем там $page
по поводу $x - как понять откуда берётся?

$x это index.php?x=

---

glock18, я неособо силён в етом... ето так сказать кривая попытка защиты...

---

где можно прочитать про проверку вводимых данных на правильность?

и как сделать : что бы если index.php?x= допустим test (файла modules/test/test.tpl несуществует) он инклюдил 404.php? т.е не только для ?x=test а для всех ?x= которых несуществует.

Спустя 31 минута, 6 секунд (16.06.2009 - 18:46) glock18 написал(а):
Цитата (DeeKeiD @ 16.06.2009 - 15:15)
и как сделать : что бы если index.php?x= допустим test (файла modules/test/test.tpl несуществует) он инклюдил 404.php? т.е не только для ?x=test а для всех ?x= которых несуществует.

switch убрать

Спустя 2 часа, 31 минута, 35 секунд (16.06.2009 - 21:18) DeeKeiD написал(а):
и каким образом будет происходить инклюд модулей без switch ?

Спустя 22 минуты, 30 секунд (16.06.2009 - 21:40) glock18 написал(а):
Цитата
и каким образом будет происходить инклюд модулей без switch ?


DeeKeiD, самым спокойным и обычным.

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

PS: прочитайте мой первый пост здесь очень внимательно. приведенный вами скрипт напрочь лишен логики.

Спустя 19 часов, 22 минуты, 44 секунды (17.06.2009 - 17:03) DeeKeiD написал(а):
может я тупой, но я непонимаю как будет делатся инклюд нужнего мне файла при определённом ?x= без switch

P.S. вобще если чесно заходя на етот форум я каждый раз жду что мне дадут какойто пример от которого я могу отталкиватся, а получается я ещё больше путаюсь...

Спустя 52 минуты, 8 секунд (17.06.2009 - 17:55) glock18 написал(а):
DeeKeiD, ну чесслово, неужели подумать над советами трудно?

ваш код:

PHP
$page = isset($_GET['page'])?$_GET['page']:"general";

switch(
$x)
{
case "":
if (file_exists('modules/main/$x.tpl')) {
   include("modules/main/$x.tpl");
}
 else {
   include("404.php");
}
break;
}


далее вы читаете мои комментарии касательно switch
Цитата (glock18 @ 16.06.2009 - 13:52)
ооочень странный блок-switch. Вы осознаете, что блок
PHP
if (file_exists('modules/main/$x.tpl')) {
 include(\\"modules/main/$x.tpl\\");
}
 else {
 include(\\"404.php\\");
}


сработает только, если $x - пустая строка.
Как думаете, у вас есть в папке modules/main файл .tpl? Очевидно, скрипт выдаст 404 ошибку. То есть подключит ваш 404.php.

Подумайте над этим.


Ну неужели убрать switch так трудно?

PHP
$page = isset($_GET['page'])?$_GET['page']:"general";

if (file_exists('modules/main/$x.tpl')) {
   include("modules/main/$x.tpl");
}
 else {
   include("404.php");
}


я уж не говорю, что у вас там используется непонятно откуда взявшаяся переменная $x, хотя вместо нее должна использоваться по логике $page, которую вы получаете выше.

PHP
$page = isset($_GET['page'])?$_GET['page']:"general";

if (file_exists("modules/main/$page.tpl")) {
   include("modules/main/$page.tpl");
}
 else {
   include("404.php");
}


еще у вас в file_exists кавычки нужны были двойные - ".

Ну вот и сейчас - вы обращаетесь к урлу http://localhost/site/index.php?page=home

и у вас инклюдится modules/main/home.tpl, если есть, а иначе 404.php

Это все предельно просто. Неужели было трудно почитать то что вам говорили, изучить мануалы и сделать так, как предлагают.

Если вы разберетесь сами, то и путать вас ответы, даваемые здесь, не будут.

Спустя 48 минут, 14 секунд (17.06.2009 - 18:43) DeeKeiD написал(а):
Код
$page = isset($_GET['page'])?$_GET['page']:"general";

if (file_exists("modules/main/$page.tpl")) {
  include("modules/main/$page.tpl");
} else {
  include("404.php");
}
это только для "../modules/main/..." а мне надо не только .../main/... потому я и не могу понять как будет работать без switch

например:

www/modules/main/
www/modules/video/
www/modules/games/
www/search.php
www/register.php

как с помощью вышеописанной функции проинклюдить всё ето?

т.е на сколько я понимаю ?page= будет инклюдить файлы только из папки ../modules/main/.. , а у меня как видите не только там лежат нужные мне файлы для инклюда

Спустя 34 минуты, 49 секунд (17.06.2009 - 19:18) Kuliev написал(а):
DeeKeiD

Примерно так:
PHP
$page = isset($_GET['page']) ? $_GET['page'] : main;
 
 switch (
$page)
 {
     case 
"main":
           if (
file_exists("modules/main/$page.tpl"))
            {
               include(
"modules/main/$page.tpl");
            } 
             else
            {
                include(
"404.php");
            };
     break;
     case 
"video":
           if (
file_exists("modules/main/$page.tpl"))
            {
               include(
"modules/main/$page.tpl");
            } 
             else
            {
                include(
"404.php");
            };
     break;
 }




Спустя 5 часов, 16 минут, 47 секунд (18.06.2009 - 00:35) DeeKeiD написал(а):
блин.. попробую поставить вопрос иначе....

Имеется функция
PHP
switch ($x)
{
    case 
"news":
        include(
"modules/news/news.tpl");
    break;
    case 
"video":
        include(
"modules/video/video.tpl");
    break;
    case 
"files":
        include(
"modules/files/files.tpl");
    break;
    case 
"register":
        include(
"register.php");
    break;
    case 
"search":
        include(
"search.php");
    break;
}

Необходимо:
1. если в ?x= прописано значение несуществующее в switch например: ?x=super_mega_poisk инклюдится 404.php

надеюсь я понятно обьяснил?

Спустя 41 минута, 9 секунд (18.06.2009 - 01:16) kirik написал(а):
Цитата (DeeKeiD @ 17.06.2009 - 16:35)
Необходимо:
1. если в ?x= прописано значение несуществующее в switch например: ?x=super_mega_poisk инклюдится 404.php


PHP
switch ($x)
{
    case "news":
        include("modules/news/news.tpl");
    break;
    case "video":
        include("modules/video/video.tpl");
    break;
    case "files":
        include("modules/files/files.tpl");
    break;
    case "register":
        include("register.php");
    break;
    case "search":
        include("search.php");
    break;
    default:
        include("404.php");
    break;
}

Спустя 1 минута (18.06.2009 - 01:17) twin написал(а):
Цитата
надеюсь я понятно обьяснил?

Да вполне smile.gif
PHP
switch ($x)
{
    case 
"news":
        include(
"modules/news/news.tpl");
    break;
    case 
"video":
        include(
"modules/video/video.tpl");
    break;
    case 
"files":
        include(
"modules/files/files.tpl");
    break;
    case 
"register":
        include(
"register.php");
    break;
    case 
"search":
        include(
"search.php");
    break;

    default:
        include(
"404.php");
    break;
}

Спустя 34 секунды (18.06.2009 - 01:17) twin написал(а):
О блин...

Спустя 14 минут, 29 секунд (18.06.2009 - 01:32) kirik написал(а):
"Повторение - мать учения" smile.gif

Спустя 4 часа, 42 минуты, 27 секунд (18.06.2009 - 06:14) Kuliev написал(а):
kirik
twin

А если файла modules/files/files.tpl нету, то скрипт заругается... huh.gif


Спустя 1 час, 31 минута, 6 секунд (18.06.2009 - 07:45) kirik написал(а):
Цитата (Kuliev @ 17.06.2009 - 22:14)
А если файла modules/files/files.tpl нету, то скрипт заругается...

Ну это уже проблемы программиста. От пользователя это не зависит, а вот программист инклюдит несуществующий файл..

Спустя 6 часов, 21 минута, 46 секунд (18.06.2009 - 14:07) DeeKeiD написал(а):
Спасибо! в итоге как видите решением окозался код из 3х строк
PHP
default:
        include(
"404.php");
    break;

smile.gif


_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.